对子目录中的每个文件执行,然后删除文件

时间:2011-03-29 19:30:09

标签: windows batch-file dos

我需要帮助创建一个批处理文件,该文件首先在每个子目录中的每个文件上运行一个命令,然后删除该命令刚刚运行的文件。

例如:

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 个答案:

答案 0 :(得分:4)

从示例中的C:\temp文件夹中,您应该可以执行

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

/r开关显示“递归到当前目录的每个子目录并运行此for命令”,以及&&允许您在do子句中放置多个命令。

您还可以指定使用哪个文件夹作为递归的基础,因此您可以从任何地方(不仅仅是C:\temp)执行此操作,并且它可以正常工作:

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

正如乔伊在评论中所说,你可以取代&&与&取决于您是否要删除文件,即使execute_command.exe返回错误。