Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 75 76 77 78 79 80 81 82 83 ... 175
Перейти на страницу:

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;

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

В Files=new Enumerator(Fold.Files);

В s="";

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

В while (!Files.atEnd()) {

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

В  SPath=Files.item().Path;

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

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

  //Сравниваем расширение файла с расширением SExt

В  if (FileExt==SExt.toUpperCase()) {

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

В В  try {

В В В  Status="Ok";

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

В В В  //Files.item().Delete();

   } catch (e) { //Обрабатываем возможные ошибки

В В В  if (e != 0) {

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

В В В В  Status="Busy";

В В В  }

В В  }

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

В В  SPath=SPath.replace("~","{~}");

В В  SPath=SPath.replace("+","{+}");

В В  SPath=SPath.replace("^","{^}");

В В  SPath=SPath.replace("%","{%}");

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

   //в Блокнот

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

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

В В  WScript.Sleep(500);

В  }

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

В }

}

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

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

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

//Запускаем Блокнот

theNotepad = WshShell.Exec("Notepad");

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

WScript.Sleep(500);

//Активизируем окно Блокнота

WshShell.AppActivate(theNotepad.ProcessID);

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

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

//Определяем каталог, с которого будет начато удаление файлов

Folder = FSO.GetFolder("D:\");

//Вызываем функцию LoopSubFolder для каталога Folder

LoopSubFolders(Folder);

//Формируем информацию о количестве обработанных файлов

SItog="Total: "+ColTmp+ " file(s)";

//Посылаем в Блокнот итоговую информацию

WshShell.SendKeys(SItog);

/*************  Конец *********************************************/

Поиск файлов с использованием регyлярных выражений

Всем хорошо известно, что для поиска файлов и папок с помощью стандартных средств Windows в именах можно использовать подстановочные символы "?" (обозначает любой один символ) и "*" (обозначает любое число любых символов). Например, на рис. 5.12 представлен результат поиска файлов *.sys (все файлы с расширением sys) на диске С:.

Р РёСЃ. 5.12. Рспользование подстановочных символов РїСЂРё РїРѕРёСЃРєРµ файлов

В сценариях WSH можно производить поиск файлов (как и любого другого текста) с помощью гораздо более сложных правил для определения соответствий. Для этого используются регулярные выражения, которые определяют образец текста для поиска. Для задания этого образца используются литералы и метасимволы. Каждый символ, который не имеет специального значения в регулярных выражениях, рассматривается как литерал и должен точно совпасть при поиске. Метасимволы — это символы со специальным значением в регулярных выражениях. Описание наиболее часто используемых метасимволов приведено в табл. 5.14.

1 ... 75 76 77 78 79 80 81 82 83 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии