Добрый день
Может кто-нибудь подскажет?
Мне нужно скриптом по расписанию раз в неделю перемещать все файл из одной папки в другую, при этом к названию файла добавлять что-то типа _[date]
к примеру:
из d:Folder1file1.ext получали бы d:Folder2file1_07.04.2006.ext
проблема в том, что формат даты в системе с разделителями вида "/" а не "."
cmd-файл пишешь? Мдя. Я бы, честно говоря, на паскале налабал:
Зайди в control panel -> Regional and Language Option -> Customize Regional Options -> Date и тут поменяй Date сепаратор на то что тебе надо будет тебе "." вместо "/"
Если немного поизвращаться, то можно написать, например, такой 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 ).
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)