Функция bat, чтобы найти файл в папке и подпапках и что-то с ним сделать. - PullRequest
7 голосов
/ 04 февраля 2012

Мне нужно найти все файлы с определенным именем файла (например, main.css) в папке и во всех подпапках, а затем что-то с этим сделать (например, переименовать, переместить, удалить, добавить текстовую строку и т. Д.)

Ответы [ 2 ]

14 голосов
/ 05 февраля 2012

Это то, что вам нужно:

for /R %f in (main.css) do @echo "%f"

Естественно, вы бы заменили echo тем, что хотите сделать с файлом. Вы можете использовать подстановочные знаки, если вам нужно:

for /R %f in (*.css) do @echo "%f"
8 голосов
/ 12 сентября 2013

Хотя это будет проходить по дереву каталогов:

for /R %f in (main.css) do @echo "%f"

На самом деле оно не соответствует именам файлов.То есть, если у вас есть дерево:

    DirectoryA
        A1
        A2

, операция for / R даст% f из DirectoryA / main.css , тогда DirectoryA / A1 / main.css и т. Д., Даже если main.css не находится ни в одном из этих каталогов.Поэтому, чтобы быть уверенным, что файл (или каталог) действительно существует, вы должны сделать следующее:

for /R %f in (main.css) do @IF EXIST %f @echo "%f"

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

Выше, по крайней мере, как это работает в Windows 8.

...