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

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

Жанры

Windows Script Host для Windows 2000/XP

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

Шрифт:

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.

Таблица 5.14. Некоторые метасимволы, использующиеся в регулярных выражениях

Символы Описание
\
Следующий символ будет являться специальным символом или, наоборот, литералом. Например,
n
означает символ "n", а "
\n
" означает символ новой строки. Последовательности
\\
соответствует символ "\", а
\(
 — символ "("
^
Начало строки
$
Конец строки
*
Предыдущий символ повторяется любое число раз (в том числе ни разу). Например, выражению
zo*
соответствуют как "z", так и "zoo"
+
Предыдущий символ повторяется не менее одного раза. Например, выражению
zo+
соответствует "zoo", но не "z"
?
Предыдущий символ повторяется не более одного раза
.
(точка)
Любой символ, кроме перевода строки
х|у
Либо
символ "х", либо символ "у". Например, выражению
z|food
соответствуют "z" или "food"
[xyz]
Множество символов. Означает любой один символ из набора символов, заключенных в квадратные скобки. Например, выражению
[abc]
соответствует символ "а" в слове "plain"
[a-z]
Диапазон символов. Означает любой один символ из заданного диапазона. Например, выражению
[a-z]
соответствует любая буква английского алфавита в нижнем регистре
[^m-z]
Означает любой символ, не входящий в заданный диапазон. Например, выражению
[^m-z]
соответствует любой символ, не попадающий в диапазон символов от "m" до "z"
\b
Граница слова, т.е. позиция между словом и пробелом. Например, выражению
er\b
соответствует символ "er" в слове "never", но не в слове "verb"
Позиция внутри слова (не на границе). Например, выражению
еа*r\B
соответствует подстрока "ear" в "never early"
\d
Символ, обозначающий цифру. Эквивалентно
[0-9]
\D
Любой символ, кроме цифры. Эквивалентно
[^0-9]

Метасимволы можно употреблять совместно, например, комбинация

".*"
означает любое число любых символов.

Замечание

Более подробную информацию о регулярных выражениях можно найти, например, в документации Microsoft по языку VBScript.

В качестве примера использования регулярных выражений в листинге 5.18 приведен сценарий FindRegExp.js, в котором производится поиск в подкаталоге ForFind текущего каталога всех файлов, имена которых начинаются с символов "П", "А" или "И" и имеют расширение txt.

Для получения доступа к каталогу ForFind в сценарии используется метод

GetFolder
объекта
FileSystemObject
:

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

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

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

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

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

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

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

Поиск нужных файлов будет выполняться с помощью следующего регулярного выражения:

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

RegEx=new RegExp("^[ПАИ].*\.txt$", "i");

Сам поиск и вывод имен найденный файлов производятся в функции

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

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

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

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

Files=new Enumerator(Fold.Files);

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

while
:

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

while (!Files.atEnd) {

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

}

Для текущего файла в коллекции выделяется его имя, которое затем с помощью метода

test
объекта
RegExp
проверяется на соответствие заданному регулярному выражению:

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

Третий. Том 5

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

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Практик

Листратов Валерий
5. Ушедший Род
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Практик

Мастер 3

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

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

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

Звездная Кровь. Экзарх I

Рокотов Алексей
1. Экзарх
Фантастика:
боевая фантастика
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Экзарх I

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

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

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

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

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

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Я еще барон. Книга III

Дрейк Сириус
3. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще барон. Книга III

Хозяин оков VI

Матисов Павел
6. Хозяин Оков
Фантастика:
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Хозяин оков VI

Офицер Красной Армии

Поселягин Владимир Геннадьевич
2. Командир Красной Армии
Фантастика:
попаданцы
8.51
рейтинг книги
Офицер Красной Армии

Я уже граф. Книга VII

Дрейк Сириус
7. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже граф. Книга VII