Организация циклов

Команда Findstr и ее использование в цикле

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

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

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

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

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

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

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

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

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

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

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

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

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

/P Пропускает строки, содержащие непечатаемые символы.

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

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

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

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

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

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

имеет префикса /C. Например, 'FINDSTR "Привет мир" a.b' ищет "Привет" или

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

"Привет мир" в файле a.b.

Краткая сводка по синтаксису регулярных выражений:

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

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

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

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

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

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

[x-y] Диапазон: любые символы из указанного диапазона

\x Служебный символ: символьное обозначение служебного символа x

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

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

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

@echo off

set /a kol=0

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

echo %kol%

В командных файлах для организации циклов используются несколько разновидностей оператора FOR, которые обеспечивают следующие функции:

  • выполнение заданной команды для всех элементов указанного множества;
  • выполнение заданной команды для всех подходящих имен файлов;
  • выполнение заданной команды для всех подходящих имен каталогов;
  • выполнение заданной команды для определенного каталога, а также всех его подкаталогов;
  • получение последовательности чисел с заданными началом, концом и шагом приращения;
  • чтение и обработка строк из текстового файла;
  • обработка строк вывода определенной команды.

1.1.13.1. Цикл FOR … IN … DO …

Самый простой вариант синтаксиса команды FOR для командных файлов имеет следующий вид:

FOR %%переменная IN (множество) DO команда [параметры]

Внимание!

Перед названием переменной должны стоять именно два знака процента (%%), а не один, как это было при использовании команды FOR непосредственно из командной строки!

Пример 5. Если в командном файле заданы строки

@ECHO OFFFOR %%i IN (Раз, Два, Три) DO ECHO %%i

то в результате его выполнения на экран будет выведено следующее:

РазДваТри

Параметр множество в команде FOR задает одну или более текстовых строк, разделенных запятыми, которые необходимо обработать с помощью заданной команды. Скобки здесь обязательны. Параметр команда [параметры] задает команду, выполняемую для каждого элемента множества, при этом вложенность команд FOR на одной строке не допускается. Если в строке, входящей во множество, используется запятая, то значение этой строки нужно заключить в кавычки. Например, в результате выполнения файла с командами

@ECHO OFFFOR %%i IN ("Раз,Два",Три) DO ECHO %%i

на экран будет выведено

Раз,ДваТри

Параметр %%переменная представляет подставляемую переменную (счетчик цикла), причем здесь могут использоваться только имена переменных, состоящие из одной буквы. При выполнении команда FOR заменяет подставляемую переменную текстом каждой строки в заданном множестве, пока команда, стоящая после ключевого слова DO, не обработает все такие строки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: