Чтение онлайн

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Имя файла (Дата и время создания) Дата и время перемещения

Например:

34556.003 (19/10/2002 10:45) 19/10/2002 11:02

43432_KL.003 (19/10/2002 10:45) 19/10/2002 11:02

45.003 (19/10/2002 10:45) 19/10/2002 11:02

...

Кроме этого, во время перемещения файлов на экран должна выводиться информация о том, какой именно файл обрабатывается, а после завершения работы сценария нужно напечатать общее количество перемещенных файлов (рис. 5.13).

Рис. 5.13.

Информация о перемещении файлов

Поставленную задачу выполняет рассматриваемый ниже сценарий MoveLog.js; запускать этот сценарий следует в консольном режиме с помощью cscript.exe.

Пути к каталогу-источнику, в котором первоначально находятся файлы, и к целевому каталогу, в который будут перемещены эти файлы, хранятся соответственно в переменных

Source
и
Dest
:

var

 Source="C:\\In\\", //Путь к каталогу-источнику файлов для перемещения

 Dest="C:\\Out\\"; //Путь к целевому каталогу

В переменных

Mask
и
PathLog
записаны соответственно расширение файлов для перемещения и путь к log-файлу:

var

 Mask="003", //Расширение файлов для перемещения

 PathLog="C:\\In\\log.txt"; //Путь к log-файлу

Сначала в сценарии с помощью метода

FolderExists
объекта
FileSystemObject
проверяется наличие на диске каталога-источника; в случае отсутствия этого каталога выводится соответствующее сообщение и выполнение сценария прерывается:

//Создаем объект FileSystemObject

FSO=WScript.CreateObject("Scripting.FileSystemObject");

//Проверяем наличие каталога-источника

if (!FSO.FolderExists(Source)) {

 //Выводим сообщение об отсутствии каталога-источника

 WScript.Echo("Каталог-источник", Source, "не существует.");

 WScript.Echo("Нажмите Enter...");

 WScript.StdIn.ReadLine;

 //Выходим из сценария

 WScript.Quit;

}

Аналогичным образом проверяется наличие целевого каталога:

//Проверяем наличие целевого каталога

if (!FSO.FolderExists(Dest)) {

 //Выводим сообщение об отсутствии целевого каталога

 WScript.Echo("Целевой каталог", Dest, "не существует.");

 WScript.StdIn.ReadLine;

 WScript.StdIn.ReadLine;

 //Выходим из сценария

 WScript.Quit;

}

После этого создается объект

Enumerator
(переменная
Files
) для доступа к коллекции всех файлов в каталоге-источнике:

//Создаем объект Folder для каталога-источника Fold=FSO.GetFolder(Source);

//Создаем объект Enumerator для доступа к коллекции файлов

//в каталоге-источнике

Files=new Enumerator(Fold.Files);

Операции записи информации в log-файл и непосредственно переноса файлов из одного каталога в другой реализованы соответственно в функциях

WriteLog
и
MoveFiles
.

В функции

WriteLog
после объявления переменных открывается log-файл в режиме добавления строк:

var s, ss, s1, d, File, FLog;

WScript.Echo(" ");

WScript.Echo("Записываем информацию в log-файл...");

//Открываем log-файл для добавления

FLog=FSO.OpenTextFile(PathLog, ForAppending, true);

Затем в цикле

while
происходит просмотр коллекции файлов в каталоге-источнике:

//Переходим к первому элементу коллекции файлов

Files.moveFirst;

//Цикл по всем файлам в коллекции

while (!Files.atEnd) {

 //Извлекаем текущий файл из коллекции

 File=Files.item;

 //Переходим к следующему файлу в коллекции

 Files.moveNext;

}

Если файл подлежит перемещению (расширение этого файла совпадает с расширением файлов для перемещения), то определяется его имя (свойство Name), дата создания (свойство DateCreated) и текущая дата (объект Date), и в log-файл записывается соответствующая информация:

//Выделяем расширение файла

s=FSO.GetExtensionName(File.Name);

//Проверяем, совпадает ли расширение текущего файла

//с расширением файлов для перемещения

if (s==Mask) {

 //Выводим имя файла на экран

 WScript.Echo(" "+File.Name);

 //Определяем дату создания файла

 d=new Date(File.DateCreated);

 //Формируем строку ss для записи в log-файл

 ss=LFillStr(13,File.Name)

 s1="("+DateToStr(d)+" ";

 s1+=TimeToStr(d)+")";

 ss+=LFillStr(20,s1);

 //Определяем текущую дату

 d=new Date;

 ss+=DateToStr(d);

 ss+=" "+TimeToStr(d);

 //Записываем сформированную строку в log-файл

 FLog.WriteLine(ss);

}

Записываемая в log-файл строка формируется в нужном виде с помощью вспомогательных функций

LFillStr
(выравнивание строки влево в поле заданной длины),
DateToStr
(формирование из объекта Date строки формата ДД/ММ/ГГГГ) и
TimeTostr
(формирование из объекта Date строки формата ЧЧ:ММ).

В функции

MoveFiles
, как и в
WriteLog
, производится перебор в цикле
while
файлов каталога-источника (элементов коллекции Files). Перемещение файлов осуществляется с помощью последовательного применения методов
Copy
и
Delete
:

Files.moveFirst;

//Цикл по всем файлам в коллекции

while (!Files.atEnd) {

 //Извлекаем текущий файл из коллекции

 File=Files.item;

Поделиться с друзьями: