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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

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

// Вспомогательные функции 

//Выравнивание строки s вправо в поле длиной l символов

function RFillStr(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);

В }

}

//Выравнивание строки 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);

В }

}

//Выравнивание строки s по центру в поле длиной l символов

function FillStr(l,s) {

В var ss,i,ll,s1,l2;

В ll=l-s.length;

В if (s.length>=l) {

В  return(s);

В } else {

В  ss=s;

В  l2=Math.round((l-s.length)/2);

В  ss=LFillStr(s.length+l2,s);

В  ss=RFillStr(l,ss);

В  return(ss);

В }

}

Удаление ненужных временных файлов с жесткого диска

Р’ результате некорректного завершения приложений РЅР° жестком РґРёСЃРєРµ часто остаются "бесхозные" временные файлы (СЃ расширением tmp), которые затем приходится удалять вручную. Весьма СѓРґРѕР±РЅРѕ было Р±С‹ удалять РІСЃРµ такие файлы сразу СЃРѕ всего жесткого РґРёСЃРєР°, РЅРµ заботясь Рѕ том, РІ каких каталогах РѕРЅРё находятся. Рспользуя стандартные средства операционной системы, можно сначала СЃ помощью пункта Найти (Find) меню РџСѓСЃРє (Start) составить СЃРїРёСЃРѕРє всех временных файлов (СЂРёСЃ. 5.9), затем выделить РІСЃРµ файлы РІ этом СЃРїРёСЃРєРµ Рё нажать комбинацию клавиш <Shift>+<Delete> (удаление файлов без помещения РІ РљРѕСЂР·РёРЅСѓ).

Однако если хотя бы один из временных файлов будет занят каким-либо приложением, то в доступе к нему будет отказано и процесс удаления прервется (рис. 5.10).

Поэтому для удаления с жесткого диска всех временных файлов мы напишем сценарий DelTmp.js (основная идея, которая используется в данном сценарии, позаимствована из статьи [6]).

Алгоритм работы сценария состоит в следующем:

□ в Блокноте (notepad.exe) создается новый файл для отображения в нем результатов работы;

□ на диске D: просматриваются подкаталоги всех уровней вложенности;

□ в каждом подкаталоге ищутся все временные файлы с расширением tmp;

□ для каждого найденного временного файла производится попытка удаления. В случае успеха в Блокноте печатается путь к файлу и слово "OK", если же удаляемый файл занят, то печатается путь к файлу и слово "Busy" ("Занят");

□ после просмотра всех каталогов в Блокноте печатается общее количество найденных временных файлов (рис. 5.11).

Рис. 5.9. Список всех временных файлов на диске D:

Рис. 5.10. Ошибка, возникающая при попытке удалить занятый файл 

Ртак, наиболее важными РІ сценарии являются: функция DelFilesInFolder(Fold, SExt), РІ которой РїСЂРѕРёСЃС…РѕРґРёС‚ попытка удаления РІ каталоге Fold всех файлов, имеющих расширение SExt, Рё рекурсивная (С‚.Рµ. содержащая обращение Рє самой себе) функция LoopSubFolders(Fold), РІ которой РїСЂРѕРёСЃС…РѕРґРёС‚ вызов функции DelFilesInFolder для подкаталогов каталога 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("%", "{%}");

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

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