|
Перемещение по расписанию
|
|
|
|
crestana |
Пятница, 07 Апреля 2006, 11:21
|
Участник
Профиль
Группа: Участник
Сообщений: 290
Регистрация: 07.02.2002
Пользователь №: 1269
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Добрый день Может кто-нибудь подскажет? Мне нужно скриптом по расписанию раз в неделю перемещать все файл из одной папки в другую, при этом к названию файла добавлять что-то типа _[date] к примеру: из d:Folder1file1.ext получали бы d:Folder2file1_07.04.2006.ext проблема в том, что формат даты в системе с разделителями вида "/" а не "."
Сообщение отредактировал crestana - Пятница, 07 Апреля 2006, 11:22
--------------------
Serj
|
|
|
|
|
yozh |
Пятница, 07 Апреля 2006, 13:24
|
Ведущий
Профиль
Группа: WinCity Team
Сообщений: 2409
Регистрация: 06.09.2002
Из: Петербург/Штутгарт
Пользователь №: 3321
Конфигурация
Корпус: Compaq nx8220 PY518ET Процессор: Другой Материнская плата: HP 82915PM/GM/GMS Оперативная память: DDR2-SDRAM 1024 Mb Samsung M4 70T2953BY0-CD5 Видеокарта: ATI Mobility Radeon X600 128MB Жесткий диск (винчестер): ST9808211A, 75Gb Дисковод: Нет дисковода CD/DVD: MATSHITA DVD-RAM UJ-832S Модем: Agere Systems AC'97 Сетевой адаптер: Broadcom NetXtreme Gigabit + Intel PRO/Wireless 2200BG Звуковая плата: Intel 82801FB ICH6 - AC'97 Монитор: 15,4'' TFT, SWXGA (1680 x 1050) Операционная система: WinXPProGerSP2,Slackware 11.0,FreeDOS Beta9 Прочее: HP LaserJet 1000, HP ScanJet 2400
|
cmd-файл пишешь? Мдя. Я бы, честно говоря, на паскале налабал: Код program mydate;
uses DOS;
var Year,Month,Day,DayOfWeek:Word; S,S1:string;
begin GetDate(Year,Month,Day,DayOfWeek); str(Year,S); str(Month,S1); if (Length(S1)<2) then S1:='0'+S1; S:=S+'.'+S1; str(Day,S1); if (Length(S1)<2) then S1:='0'+S1; S:=S+'.'+S1; writeln(S); end. Пишет дату в нужном формате в стандартный вывод. А вообще, cmd/bat для таких вещей не очень удобны, попробуй windows scripting host. Вот тут есть примеры: http://www.merlyn.demon.co.uk/vb-date1.htmhttp://64.82.32.68/WSH/greg2jd.htm
|
|
|
|
|
krassavchik |
Пятница, 07 Апреля 2006, 17:13
|
Участник
Профиль
Группа: Участник
Сообщений: 72
Регистрация: 10.03.2006
Из: Chicago
Пользователь №: 10846
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Зайди в control panel -> Regional and Language Option -> Customize Regional Options -> Date и тут поменяй Date сепаратор на то что тебе надо будет тебе "." вместо "/"
--------------------
Знал бы прикуп - дал бы в репу!
|
|
|
|
|
kenm |
Пятница, 07 Апреля 2006, 22:43
|
Гуру
Профиль
Группа: Участник
Сообщений: 1106
Регистрация: 05.07.2002
Пользователь №: 2636
Конфигурация
Корпус: noname Процессор: Pentium III Материнская плата: ASUS Оперативная память: 256 Видеокарта: mx400 Жесткий диск (винчестер): WD 80gb Дисковод: 3.5" CD/DVD: не помню Модем: нет Сетевой адаптер: 3com 905b Звуковая плата: чтото там играет... Монитор: 17 Операционная система: Ubuntu 6.06 Прочее: --
|
Код for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set date=%%1%%2%%3 cd test && dir /b > ..\list.txt && cd .. for /F %%i in (list.txt) do copy test\%%i test2\%date%%%i
ну примерно так - если скорую руку, я думаю идея понятна. в вашем случае нужно только вместо delims=. использовать delims=/ и еще вывод date /t разный в различных версиях ОС - это протестировано на w2003
--------------------
Тот прав, у кого больше прав.
|
|
|
|
|
Gvan |
Вторник, 11 Апреля 2006, 17:12
|
Участник
Профиль
Группа: Участник
Сообщений: 300
Регистрация: 29.01.2002
Пользователь №: 1199
Конфигурация
Корпус: NoName, 300Вт Процессор: Celeron Материнская плата: Asus TUSL2-C Оперативная память: 512 Mb Видеокарта: nVidia Жесткий диск (винчестер): IBM 60 Gb Дисковод: 3.5" CD/DVD: CD-ROM LG Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: LCD 17" Neovo Операционная система: Win2k server Прочее: --
|
Если немного поизвращаться, то можно написать, например, такой js-скрипт : var Source = "d:\\test\\ClientVPN1.ovpn", Destination = "d:\\test2", DateFormatForFile = "ddmmyy"; var FSO;
FSO=WScript.CreateObject("Scripting.FileSystemObject"); WriteLog("StartWrite");
if (!FSO.FileExists(Source)) { WriteLog("Source file "+Source+" not found"); WriteLog("EndWrite"); WScript.Quit(); }
if (!FSO.FolderExists(Destination)) { WriteLog("Destination folder "+Destination+" not found"); WriteLog("EndWrite"); WScript.Quit(); }
Destination+="\\"+FSO.GetBaseName(Source)+"_"+CurrentDate(DateFormatForFile)+"."+FSO.GetExtensionName(Source); WScript.Echo("qqq"); try { FSO.MoveFile(Source,Destination); WriteLog("Файл "+Source+" перемещён в "+Destination); } catch(e) { WriteLog("Ошибка при перемещении файла "+Source+" в "+Destination); WriteLog("Описание ошибки: \""+e.description+"\""); WriteLog("EndWrite"); WScript.Quit(); }
WriteLog("EndWrite"); //WScript.Echo("end.");
/***************************************/ //Функция для записи в лог function WriteLog (EventForWrite) //EventForWrite - сообщение или признак начала/окончания скрипта { var FSO; var FLog; var ForAppending=8; //Добавлять записи в лог FSO=WScript.CreateObject("Scripting.FileSystemObject"); FLog=FSO.OpenTextFile(WScript.ScriptName+".log",ForAppending,true); switch (EventForWrite) { case "StartWrite": FLog.WriteLine(CurrentDate()+" ========= ЗАПУСК СКРИПТА. ========="); FLog.Close(); break; case "EndWrite": FLog.WriteLine(CurrentDate()+" ========= СКРИПТ ВЫПОЛНЕН. ========"); FLog.Close(); break; default: { FLog.WriteLine(CurrentDate()+" "+EventForWrite); } FLog.Close(); } }
//Текущая дата и время function CurrentDate (DateFormat) { var d; var dDay; dDay = new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"); var dMonth; dMonth = new Array("01","02","03","04","05","06","07","08","09","10","11","12"); var dDate, dHours, dMinutes, dSeconds; d=new Date(); if (d.getDate()<10) dDate="0"+d.getDate(); else dDate=d.getDate(); if (d.getHours()<10) dHours="0"+d.getHours(); else dHours=d.getHours();
if (d.getMinutes()<10) dMinutes="0"+d.getMinutes(); else dMinutes=d.getMinutes();
if (d.getSeconds()<10) dSeconds="0"+d.getSeconds(); else dSeconds=d.getSeconds(); switch (DateFormat) { case "FullDay": return(dDay[d.getDay()]+" "+ dDate+"."+dMonth[d.getMonth()]+"."+d.getYear()+" "+ dHours+":"+dMinutes+":"+dSeconds); break; case "ddmmyy": return(dDate+"."+dMonth[d.getMonth()]+"."+d.getYear()); break; case "yymmdd": return(d.getYear()+"."+dMonth[d.getMonth()]+"."+dDate); break; default: { return(dDate+"."+dMonth[d.getMonth()]+"."+d.getYear()+" "+ dHours+":"+dMinutes+":"+dSeconds); } } }
Для его использования нужно скопировать все выделенное зеленым цветом в какой-нибудь текстовый файл и переименовать его в файл с расширением JS (не забыть переименовать в теле сценария пути для параметров Source и Destination ).
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
|
0 Пользователей:
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|