ColFind=0; //Счетчик найденных файлов

SFileNames=""; //Строка с именами файлов

//Создаем коллекцию файлов в каталоге Fold

Files=new Enumerator(Fold.Files);

Элементы коллекции просматриваются в цикле while:

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

while (!Files.atEnd()) {

 Files.moveNext(); //Переходим к следующему файлу

}

Для текущего файла в коллекции выделяется его имя, которое затем с помощью метода test объекта RegExp проверяется на соответствие заданному регулярному выражению:

//Выделяем имя файла

SName=Files.item().Name;

//Проверяем, соответствует ли имя файла регулярному выражению

if (RegEx.test(SName)) {

 ColFind++; //Увеличиваем счетчик найденных файлов

 //Добавляем имя файла к переменной SFileNames

 SFileNames+=SName+ " \n";

}

В конце функции FindFilesInFolder(Fold, RegEx) на экран выводятся имена найденных файлов и их общее количество:

SItog="Найдено файлов: "+ColFind;

//Выводим на экран имена и количество найденных файлов

WScript.Echo(SFileNames+SItog);

Листинг 5.18. Поиск файлов, имена которых соответствуют регулярному выражению

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

/* Имя: FindRegExp.js                                              */

/* Язык: JScript                                                   */

/* Описание: Поиск файлов, имена которых соответствуют заданному   */

/*           регулярному выражению                                 */

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

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

var WshShell,FSO,Folder,ColFind,RegExp,SFileNames;

//Функция для поиска файлов в заданном каталоге

function FindFilesInFolder(Fold,RegEx) {

 var Files,SName; //Объявляем переменные

 ColFind=0; //Счетчик найденных файлов

 SFileNames=""; //Строка с именами файлов

 //Создаем коллекцию файлов в каталоге Fold

 Files=new Enumerator(Fold.Files);

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

 while (!Files.atEnd()) {

  //Выделяем имя файла

  SName=Files.item().Name;

  //Проверяем, соответствует ли имя файла регулярному

  //выражению

  if (RegEx.test(SName)) {

   ColFind++; //Увеличиваем счетчик найденных файлов

   //Добавляем имя файла к переменной SFileNames

   SFileNames+=SName+"\n";

  }

  Files.moveNext(); //Переходим к следующему файлу

 }

 SItog="Найдено файлов: "+ColFind;

 //Выводим на экран имена и количество найденных файлов

 WScript.Echo(SFileNames+SItog);

}

/*******************  Начало  **********************************/

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

WshShell=WScript.CreateObject("WScript.Shell");

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

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

//Создаем объект Folder для доступа к подкаталогу ForFind

//текущего каталога

Folder = FSO.GetFolder(WshShell.CurrentDirectory+"\\ForFind");

//Создаем регулярное выражение (объект RegExp)

Перейти на страницу:

Похожие книги