У цій статті ми розглянемо загальні як використовується цикл командного рядка for для обробки текстових рядків і файлів. Тут буде фігурувати ключ / f, який змінює логіку роботи циклу командної строї (cmd) for і дозволяє виробляти розбір будь-якого тексту по поличках, так би мовити.
Цикл cmd for - обробка тексту
Для обробки тексту або вмісту текстового файлу з наведеною нижче конструкція:
for / f [ "параметри"] %% змінна in (джерело) do (оператор)
Тут "параметри" задають параметри пошуку, ми їх розглянемо нижче, "джерело" - тут потрібно вказати або шлях до текстового файлу, або текст, або висновок команд, "оператор" - тут власне, знаходяться команди для обробки тексту. Сам текст можна зберігати в змінної. ім'я якої ми поставимо в якості джерела.
Значення "параметри" може бути одним або комбінацією таких параметрів:
skip - дозволяє в циклі cmd for задати кількість рядків, які потрібно пропустити, рахунок йде з початку файлу, наприклад, "skip = 10" - в даному випадку будуть пропущені рядки від першої до десятої.
delims - Можна встановити додаткові роздільники рядка на підрядка. Так, стандартними роздільниками є пробіл і символ табуляції. Наприклад, "delims =. "- тут ми визначили, що коми, крапки і двокрапки являють-ся роздільниками.
tokens - даний параметр командної стоки циклу for cmd дозволяє вказати, які номери полів рядка, отриманих із заданого тексту, потрібно передати для обробки в цикл. Отримані поля будуть зберігатися в окремій змінної. Фактично, якщо приймати кожне слово рядка як окремий елемент, то параметр tokens дозволяє вказати, які саме слова за рахунком потрібно обробити. Як згадувалося вище, стандартним роздільником є пробіл і табуляція.
Для додаткової змінної, як і для змінної ініціалізації, як ім'я вказується латинська буква, велика чи маленька. Значення можна вказувати як через коми, наприклад, "tokens = 1,4, 9" - перший, четвертий і дев'ятий елемент, так і через діапазон, наприклад, "tokens = 4-11" - з четвертого по одинадцятий. Можна комбінувати: "tokens = 4-10,15,20" - з четвертого по десятий, а також, п'ятнадцятий і двадцятий елемент. Якщо ми вкажемо в якості останнього значення зірочку, то створиться ще одна змінна, яка буде зберігати в собі всі інші елементи (рядки) тексту.
usebackq - даний параметр є досить цікавим і корисним, так як дозволяє виконувати команди, передавши їх як параметр. Включивши цей параметр, подвійні лапки будуть застосовуватися для імен файлів і шляхи до них, зворотні лапки ( `), вони знаходяться на тій же кнопці, що і символ (
) - для виконуваних команд, а одинарні лапки - для літеральних рядків.
Добре, тепер можна розглянути цикл cmd for і роботу з ним на практиці.
Припустимо, у нас є файл test.txt, в якому прописані такі рядки:
Спробуємо виконати такий код: