Windows Script Host для Windows 2000/XP - Андрей Попов
Шрифт:
Интервал:
Закладка:
//в каталоге-источнике
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();
 //Выделяем расширение файла
В 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-файл
В В ss=LFillStr(13,File.Name)
В В s1="("+DateToStr(d)+" ";
В В s1+=TimeToStr(d)+")";
В В ss+=LFillStr(20,s1);
  //Определяем текущую дату
В В d=new Date();
В В ss+=DateToStr(d);
В В ss+=" "+TimeToStr(d);