Выполните для каждого файла в подкаталоге, затем удалите файл - PullRequest
1 голос
/ 29 марта 2011

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

Например:

c:\temp\1\file.abc
c:\temp\2\file.abc
c:\temp\2\file2.abc

Would run:
execute_command.exe c:\temp\1\file.abc
del c:\temp\1\file.abc
execute_command.exe c:\temp\2\file.abc
del c:\temp\2\file.abc
execute_command.exe c:\temp\2\file2.abc
del c:\temp\2\file2.abc

Любая помощь будет оценена. Спасибо.

1 Ответ

4 голосов
/ 29 марта 2011

Из папки C:\temp в вашем примере вы можете просто сделать

for /r %i in (*.abc) do execute_command.exe %i && del %i

. Переключатель /r сообщает "recurse в каждый подкаталог текущего каталога и запускает этот forcommand ", а && позволяет вводить несколько команд в предложении do.

Вы также можете указать, какую папку использовать в качестве основы для рекурсии, чтобы вы могли делать это из любого места (не только *).1010 *), и это будет работать:

for /r C:\temp %i in (*.abc) do execute_command.exe %i && del %i

Как говорит Джой в комментарии, вы можете заменить && на & в зависимости от того, хотите ли вы удалить файл, даже если execute_command.exe возвращает ошибку.

...