Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
f / Лаб работа 2 Интерпретатор команд строки Windows ХР часть 2.doc
Скачиваний:
57
Добавлен:
10.06.2015
Размер:
204.29 Кб
Скачать

1.1.14. Циклы и связывание времени выполнения для переменных

При обработке переменных среды внутри цикла могут возникать ошибки, связанные с ранним связыванием переменных.

Пример 10. Пусть имеется КФ, включающий команды:

SET a=

FOR %%i IN (Раз, Два, Три) DO SET a=%a%%%i

ECHO a=%a%

В результате его выполнения на экран будет выведена строка "a=Три".

Для исправления ситуации нужно, как и в случае с составными выражениями, вместо знаков процента (%) использовать восклицательные знаки и предварительно включить режим связывания времени выполнения командой SETLOCAL ENABLEDELAYEDEXPANSION. Таким образом, приведенный выше пример следует переписать следующим образом:

SETLOCAL ENABLEDELAYEDEXPANSION

SET a=

FOR %%i IN (One,Two,Three) DO SET a=!a!%%i

ECHO a=%a%

1.1.15. Утилита поиска строк в текстовых файлах Findstr

Назначение утилиты Findstr - поиск строк в текстовых файлах. Вызов утилиты имеет вид:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:файл]

[/C:строка] [/G:файл] [/D:список_папок] [/OFF[LINE]]

строки [[диск:][путь]имя_файла[ ...]]

/L поиск строк дословно.

/R поиск строк как регулярных выражений.

/S поиск файлов в текущей папке и всех ее подпапках.

/I определяет, что поиск будет вестись без учета регистра.

/X печатает строки, которые совпадают точно.

/V печатает строки, не содержащие совпадений с искомыми.

/N печатает номер строки, в которой найдено совпадение, и ее содержимое.

/M печатает только имя файла, в которой найдено совпадение.

/O печатает найденный строки через пустую строку.

/F:файл читает список файлов из заданного файла (/ для консоли).

/C:строка использует заданную строку как искомую фразу поиска.

/D:список_папок поиск в списке папок (разделяются точкой с запятой).

строка искомый текст.

[диск:][путь]имя_файла - задает имя файла или файлов.

Можно использовать пробелы для разделения нескольких искомых строк. Например, команда 'FINDSTR "Привет мир" a.b' ищет "Привет" или "мир" в файле a.b, а команда с ключом /C

FINDSTR /C:"Привет мир" a.b ищет строку "Привет мир" в файле a.b.

Утилита FindStr c ключом /R дает возможность использовать для задания шаблона поиска несложные регулярные выражения. Краткая справка по синтаксису регулярных выражений:

. Любой символ.

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

^ Позиция в строке: начало строки

$ Позиция в строке: конец строки

[класс] Класс символов: любой единичный символ из множества

[^класс] Обратный класс символов: любой единичный символ из дополнения

[x-y] Диапазон: любые символы из указанного диапазона, например [0-1] –двоичная цифра, [a-z] – строчная буква латинского алфавита

\x Служебный символ: символьное обозначение служебного символа x (символ \ называется экранирующим. Например \. означает точку, а не любой один символ строки).

\<xyz Позиция в слове: в начале слова

xyz\> Позиция в слове: в конце слова

Пример 11. КФ для подсчета количества строк в файле num.txt, в которых присутствует хотя бы одна двоичная цифра.

set /a kol=0

for /f %%b in ('findstr /rc:"[0-1]" num.txt') do set /a kol=kol+1

echo %kol%