Fold.

Рис. 5.11. Результат работы сценария DelTmp.js

Рассмотрим сначала функцию DelFilesInFolder(Fold, SExt). Здесь сначала создается объект Enumerator с именем Files для доступа к коллекции всех файлов в каталоге Fold:

var Files, s, SPath, FileExt, Status;

Files=new Enumerator(Fold.Files);

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

s='';

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

while (!Files.atEnd()) {

 …

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

}

Для текущего файла в коллекции выделяется его расширение, которое преобразуется к верхнему регистру:

//Определяем путь к файлу

SPath=Files.item().Path;

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

FileExt=FSO.GetExtensionName(SPath).toUpperCase();

В случае совпадения расширения FileExt с расширением SExt в блоке try…catch производится попытка удаления текущего файла:

ColTmp++; //Увеличиваем счетчик файлов для удаления

try {

 Status='Ok';

 //Пытаемся удалить файл

 Files.item().Delete();

} catch (e) {

 //Обрабатываем возможные ошибки

 if (е != 0) {

  //Произошла ошибка при удалении файла

  Status='Busy';

 }

}

Таким образом, в переменной Status будет записан результат удаления файла: 'OK' в случае успеха, и 'Busy' в том случае, если удаляемый файл занят другим приложением. После этого полный путь к удаляемому файлу и значение переменной Status печатаются в окне Блокнота с помощью метода SendKeys объекта WshShell. Здесь только нужно учесть, что в имени файла могут встретиться символы, имеющие специальный смысл для метода SendKeys, поэтому предварительно нужно соответствующим образом заменить такие символы в имени файла:

//Заменяем специальные символы в названии файла

SPath=SPath.replace('~', '{-}');

SPath=SPath.replace('+', '{+}');

SPath=SPath.replace('^', '{^}');

SPath=SPath.replace('%', '{%}');

//Посылаем название файла и результат его удаления в Блокнот

WshShell.SendKeys(SPath+'{TAB}'+Status+'~');

//Приостанавливаем сценарий на 0,5 сек

WScript.Sleep(500);

Перейдем теперь к описанию функции LoopSubFolders(Fold). Сначала в этой функции удаляются временные файлы в каталоге Fold:

//Удаляем временные файлы из каталога Fold

DelFilesInFolder(Fold, ExtForDel);

Затем происходит удаление файлов во всех подкаталогах каталога Fold, причем делается это с помощью обращения для каждого подкаталога к той же функции LoopSubFolders:

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

SubFolders = new Enumerator(Fold.SubFolders);

//Цикл по всем подкаталогам

while (!SubFolders.atEnd()) {

 //Вызываем рекурсивно функцию LoopSubFolders

 LoopSubFolders(SubFolders.item());

 //Переходим к следующему подкаталогу

 SubFolders.moveNext();

}

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

Листинг 5.17. Удаление всех временных файлов на диске D:

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

/* Имя: DelTmp.js                                                  */

/* Язык: JScript                                                   */

/* Описание: Удаление временных файлов во всех подкаталогах        */

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

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

//Объявляем глобальные переменные

var WshShell,FSO,Folder,

 ColTmp=0,        //Счетчик файлов для удаления

 ExtForDel='tmp'; //Расширение файлов, подлежащих удалению

//Рекурсивная функция для удаления временных файлов в каталоге Fold

function LoopSubFolders(Fold) {

 var SubFolders;

 //Удаляем временные файлы из каталога Fold

 DelFilesInFolder(Fold,ExtForDel);

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

 SubFolders = new Enumerator(Fold.SubFolders);

 //Цикл по всем подкаталогам

 while (!SubFolders.atEnd()) {

  //Вызываем рекурсивно функцию LoopSubFolders

  LoopSubFolders(SubFolders.item());

  //Переходим к следующему подкаталогу

  SubFolders.moveNext();

 }

}

//Функция для удаления файлов с расширением SExt в каталоге Fold

function DelFilesInFolder(Fold,SExt) {

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

 var Files,s,SPath,FileExt,Status;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату