В этой статье мы рассмотрим использование цикла for в командной строке, который, в отличии от аналогичных конструкций в других языках программирования, тут носит немного другой характер. Сперва, немного лирики…
В былые времена программирование носило совсем другие цели нежели теперь. Это теперь царит разнообразие различных языков: хочешь, пиши на php, хочешь, постигай вершины Delphi, в общем, все в изобилии и на любой вкус. Столь стремительный рост возможностей и средств для программирования затронул структуру и характер новых языков. Так, когда я еще проходил в школе на уроках информатики язык Pascal, то цикл использовался в основном для выполнения групповых математических задач: нахождение суммы чисел n-количества и групповое умножение. Теперь, ситуация немного другая, ведь помимо простой математики приходится работать с файлами, папками, объектами и коллекциями. И тут рождаются новые разновидности цикла:
- В языке vbscript для перебора значений коллекции или массива служит цикл for each … next
- В языке jscript для обработки массивов и объектов применяется цикл for … in
В командной строке цикл един, но с помощью ключей можно менять структуру его применения: работа с файлами, с каталогами, банальный перебор значений или текстовых строк.
В этой статье мы рассмотрим общую структуру цикла командной строки, так сказать – сделаем краткий обзор. По ходу материала я буду давать ссылки на остальные статьи с описанием, уже узких примеров применения, и так, начнем…
Цикл в командной строке – общее знакомство
Основной синтаксис применения следующий:
for итератор do (оператор)
Итератор – отвечает за ход выполнения. Тут определяется и условия и количество выполнения заданных операторов. Тут могут находиться как одна, так и несколько команд, которые можно объединить в одну цепочку, конвейер или группу (внутри скобок). Как и в стальных языках программировать, итератор содержит переменную инициализации (начальное значение), или же набор различных элементов – диапазон значений, группа файлов или папок.
На переменные инициализации распространяются следующие правила:
- Они существуют только в теле цикла командной строки
- В качестве имени нельзя использовать слово, например, myVar, а только латинские буквы в диапазоне от а до z или от А до Z, например %%А, %%В или %%С. Если вы используете цикл не в сценарии, а в окне консоли, то ставится только один символ %.
- Названия переменных итератора чувствительны к регистру символов, то есть, %%a и %%A будут отличаться.
Как я уже сказал, цикл в командной строке может изменять логику работы с помощью ключей, а именно:
for/D %%имя_переменной in (набор_каталогов) do оператор – как вы уже догадались, данный синтаксис применяется для групповой работы с каталогами. Об этом свидетельствует ключ /D (directory). Как и в случае с файлами, тут можно указывать шаблонный формат или список.
for /R [путь] %%имя_переменной in (набор_файлов) do оператор – данный синтаксис используется для групповой работы с подкаталоги, о чем говорит параметр /R. С его помощью можно задать путь к папке, а потом задать список и шаблон для файлов, в результате, мы можем обработать все документы заданного типа в заданном диске или папке.
Примеры работы с корневыми и вложенными папками рассмотрены в статье «Урок 8 по CMD»
for /L %%имя_переменной in (начало, шаг, конец) do оператор – отвечает за перебор значений. Параметры в круглых скобках задают начальное значение, шаг (может быть как положительным, так и отрицательным) и конечное значение.
for /F ["параметры"] %%имя_переменной in (источник) do оператор – анализ текстовых файлов, строк и вывод команд. Данный синтаксис позволяет анализировать как содержимое файла, так и заданный текст. Плюс, можно задать параметры для анализа, например, число обрабатываемых строк, разделители и комментарии.
Примеры обработки текстовых строк рассмотрены в статье «Урок 9 по CMD»
for %%имя_переменной in (набор_файлов) do оператор – данный синтаксис применяется для групповой работы с файлами. Тут %%имя_переменной является переменной инициализации, которой будет присваиваться значение, заданное в “набор_файлов”, например, путь к заданному файлу. Так, набор_файлов может быть одной строкой определяющей группу документов по шаблону, или списком строк, разделенных пробелами.
Примеры работы с файлами и данными рассмотрены в статье «Урок 7 по CMD«