CMD и парсинг файлов в директории

Озадачился я как-то одной целью, и для ее достижения, мне понадобилось реализовать стандартными windows-средствами поиск всех файлов в определенных директориях, чтобы производить с ними дальнейшие действия. В связи с конкретным условием, выбор оказался не особо большим, и я становился на cmd-интерпретаторе windows.

Небольшое вступление
Данную статью я очень давно держу в черновиках
и вот наконец решился ее дописать
и продолжить свой путь
вещания интересных и не стандартных решений
Статья пишется больше 55 дней

С самим языком я знаком давно, но вот практического опыта толком нет, т.к. не часто приходилось пользоваться. Благо моя специальность дает мне более уверенное чувство, чем стандартная справка по командам help, но все же всех технических тонкостей в голове не удержишь…

ВНИМАНИЕ! Все дальнейшие действия Вы делаете на свой страх и риск, автор статьи не несет никакой ответственности за использование данного материала!

И так, первым делом я запустил cmd и полез в help:
Run cmd and help

Как видим, список команд внушительный, но к сожалению не полный, более того, зависит от: версии и редакции Windows, установленных Service Packs и наличие различного стороннего программного обеспечения (ПО).

Ну что же, будем потихоньку разбираться, что есть что :)

Для теста я выделил отдельную папку «C:\TEST\» и все действия буду производить в рамках данной папки. Поэтому первыми нашими действиями будет создание пустого файла с расширением *.bat или *.cmd и открытие его в любом удобном для вас текстовом редакторе (не советую открывать при помощи Word :) ) Название расширения зависит от вашей версии Windows, сомневаюсь, что кто-то еще сидит на версии ниже XP, поэтому советую сразу ставить расширение *.cmd. В принципе есть еще отличия, но я думаю, опишу их в отдельной статье.

Далее обезопасим себя и пропишем следующие команды в наш файл:

Мы отключили вывод избыточной информации, настроили систему с работой переменной и перешли в каталог «C:\TEST» диска C:

Первая необходимая команда для нашей задачи — dir, которая выводит на экран список файлов и папок. Справку на языке установленной системы по данной команде можно получить при помощи команды help dir. Самостоятельно ознакомьтесь, нам понадобятся ключи «/A»,«/B»,«/S». Как видно из описания, они помогает настроить вывод отображения файлов и атрибутов. Наша цель, получить полный путь до файла с названием файла вида «c:\test\test.txt».
Для этого необходимо ввести следующую команду:

И мы получим удобный результат:

Ну а вторая необходимая команда — for, позволяет организовывать различного рода циклы. В частности нас будет интересовать цикл по нашим файлам, которые предоставит команда dir. Справочник по команде for очень обильный, рекомендую с ним ознакомиться по максимуму, я лишь поясню, что нам понадобиться.

Сама команда:

Ключ /F позволяет работать со строками/файлами в качестве переменной, а параметры в кавычках как с этими строками работать, в частности, символом # строка будет как комментарий, запятой будут разделены строки на столбцы, а параметр tokens указывает, какую строку будем передавать в цикл.
Цикл будет брать каждую строку и подставлять ее в переменную %%i, которую, для теста, мы будем выводить на экран.

Собрав в едино все  наши знания — получим следующий код:

Еще один маленький момент, если у вас выводятся русские названия файлов/папок иероглифами, то необходимо поменять кодовую страницу, для этого перед выводом меняем кодовую страницу на Windows, а после обратно на DOS:

Для Windows:

Для DOS:

Ну вот и все! Что делать с этими файлами, уже решать Вам ;)