Андрей Попов - Windows Script Host для Windows 2000/XP
В В ss+=DateToStr(d);
В В ss+=" "+TimeToStr(d);
  //Записываем сформированную строку в log-файл
В В FLog.WriteLine(ss);
В }
 //Переходим к следующему файлу в коллекции
В Files.moveNext();
В }
}
//Функция для перемещения файлов
function MoveFiles() {
 //Объявляем переменные
В var s,ss,Col,File;
 Col=0; //Счетчик количества перемещенных файлов
В WScript.Echo("");
 WScript.Echo("Перемещаем файлы ...");
 //Переходим к первому элементу коллекции файлов
В 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("");
 WScript.Echo("Перемещено файлов:",Col);
 WScript.Echo("Нажмите Enter...");
В WScript.StdIn.ReadLine();
}
/******************* Начало **********************************/
//Создаем объект 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();
}
//Создаем объект Folder для каталога-источника
Fold=FSO.GetFolder(Source);
//Создаем объект Enumerator для доступа к коллекцию файлов
//в каталоге-источнике
Files=new Enumerator(Fold.Files);
//Записываем информацию в log-файл
WriteLog();
//Перемещаем файлы в целевой каталог
MoveFiles();
/************* Конец *********************************************/
// Вспомогательные функцииВ
//Дополнение строки ss ведущими нулями до длины ll
function LeadZero(ll,ss) {
В var i,s,l1;
В s=ss.toString();
В l1=s.length;
В if (l1<=ll) {
В for (i=1;i<=ll-l1;i++) s="0"+s;
В }
В return(s);
}
//Формирование из объекта Date строки формата ДД/ММ/ГГГГ
function DateToStr(dd) {
В var s;
В s=LeadZero(2,dd.getDate())+"/";
В s+=LeadZero(2,dd.getMonth()+1)+"/";
В s+=dd.getYear();
В return(s);
}
//Формирование из объекта Date строки формата ЧЧ:ММ
function TimeToStr(dd) {
В var s;
В s=LeadZero(2,dd.getHours())+":"+LeadZero(2,dd.getMinutes());
В return(s);
}
//Выравнивание строки s влево в поле длиной l символов
function LFillStr(l,s) {
В var ss,i,ll;
В ll=l-s.length;
В if (s.length>=l) {
В return(s);
В } else {
В ss=s;
В for (i=1;i<=ll;i++) {
В В ss=ss+" ";
В }
В return(ss);
В }
}
Разработка записной книжки в формате текстового файла
Последний пример, который мы рассмотрим в этой главе, посвящен обработке данных, хранящихся в текстовом файле с разделителями (это может быть, например, выборка из электронной таблицы, базы данных и т.п.).
Предположим, что имеется файл book.txt, содержащий информацию из записной книжки в следующем формате:
Фамилия|РРјСЏ|Телефон|Улица|Дом|РљРІ.|Примечание
В качестве примера мы будем рассматривать файл book.txt, приведенный в листинге 5.20.
Листинг 5.20. Содержимое файла book.txtПотапов|Сергей|55-55-55|Моховая|3|10|Без примечаний
Попов|Андрей|56-56-56|Ленина|3|5|Без примечаний
Рванов|Рван|17-17-17|Садовая|4|6|Очень хороший человек
Казаков|Сергей|24-19-68|Полежаева|101|22|Тоже очень хороший человек
Ниже приведен сценарий SortName.js, который реализует одну из функций для работы с записной книжкой — в результате работы этого сценария все записи из book.txt сортируются по фамилии и отображаются в Блокноте (рис. 5.14).
Опишем кратко алгоритм работы сценария SortName.js.
1. Рнформация РёР· файла book.txt считывается РІ массив PersonArr. Каждый элемент массива является объектом типа Person, РІ котором хранятся РІСЃРµ данные для РѕРґРЅРѕРіРѕ человека.
2. Массив PersonArr сортируется в нужном порядке (в нашем случае — по возрастанию фамилий).
3. Содержимое всех записей из массива PersonArr выводится в текстовый файл out.txt.
4. Файл out.txt открывается в Блокноте.
Как мы видим, взаимодействие с текстовым файлом данных происходит только при загрузке его содержимого в массив. Поэтому остальная часть сценария не зависит от формата файла с данными и может в дальнейшем применяться без изменений для обработки файлов в XML-формате.