Выбрать главу

 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();

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

 s=FSO.GetExtensionName(File.Name);

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

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

 if (s==Mask) {

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

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

  //Копируем файл в целевой каталог

  File.Copy(Dest);

  //Удаляем файл

  File.Delete();

  //Увеличиваем счетчик количества перемещенных файлов

  Col++;

 }

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

 Files.moveNext();

}

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

WScript.Echo("Перемещено файлов:", Col);

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

WScript.StdIn.ReadLine();

Полный текст сценария MoveLog.js приведен в листинге 5.19.

Листинг 5.19. Поиск файлов с ведением log-файла

/*******************************************************************/

/* Имя: MoveLog.js                                                 */

/* Язык: JScript                                                   */

/* Описание: Перемещение файлов из каталога-источника в            */

/*           целевой каталог с ведением log-файла                  */

/*******************************************************************/

//Объявляем переменные

var

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

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

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

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

 ForAppending=8;    //Константа для работы с файлами

//Объявляем переменные

var FSO,Fold,Files;

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

function WriteLog() {

//Объявляем переменные

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

 WScript.Echo("");

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

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

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

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

 Files.moveFirst();

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

 while (!Files.atEnd()) {

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

  File=Files.item();

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

  s=FSO.GetExtensionName(File.Name);

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

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

  if (s==Mask) {

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

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

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

   d=new Date(File.DateCreated);

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