Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Microsoft Windows NT/2000 _ Перемещение по расписанию

Автор: crestana Пятница, 07 Апреля 2006, 11:21

Добрый день
Может кто-нибудь подскажет?
Мне нужно скриптом по расписанию раз в неделю перемещать все файл из одной папки в другую, при этом к названию файла добавлять что-то типа _[date]
к примеру:
из d:Folder1file1.ext получали бы d:Folder2file1_07.04.2006.ext
проблема в том, что формат даты в системе с разделителями вида "/" а не "."

Автор: yozh Пятница, 07 Апреля 2006, 13:24

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.htm
http://64.82.32.68/WSH/greg2jd.htm

Автор: krassavchik Пятница, 07 Апреля 2006, 17:13

Зайди в control panel -> Regional and Language Option -> Customize Regional Options -> Date и тут поменяй Date сепаратор на то что тебе надо будет тебе "." вместо "/" wink.gif

Автор: kenm Пятница, 07 Апреля 2006, 22:43

Код

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

Если немного поизвращаться, то можно написать, например, такой js-скрипт smile.gif :

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 ).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)