Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

WshShell.Run("notepad.exe rep.txt");

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

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

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

Поделиться:
Популярные книги

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Кадет Морозов

Шелег Дмитрий Витальевич
4. Живой лёд
Фантастика:
боевая фантастика
5.72
рейтинг книги
Кадет Морозов

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Вечный. Книга VII

Рокотов Алексей
7. Вечный
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Вечный. Книга VII

Деревенщина в Пекине 2

Афанасьев Семён
2. Пекин
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Деревенщина в Пекине 2

Черный Маг Императора 14

Герда Александр
14. Черный маг императора
Фантастика:
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 14

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

На границе империй. Том 10. Часть 9

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 9

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.00
рейтинг книги
Шайтан Иван 6

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

Третий. Том 2

INDIGO
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 2

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый

Ветер перемен

Ланцов Михаил Алексеевич
5. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ветер перемен