2011-03-29 115 views
1

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

例如:

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 

任何帮助,将不胜感激。谢谢。

+0

嗯,我想出了如何使用“for/f%f in('dir/bc:\ temp \ 1')执行execute_command.exe c:\ temp \ 1 \”指定的目录对于单个目录,但我不知道如何为每个子目录做类似的事情;我可以使用dir/a/s/b获得所有文件的列表,但是在那里,我一直在坚持如何使用它们来执行命令。 – Rob 2011-03-29 19:35:18

回答

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返回错误。

+2

如果你真的想要删除文件并忽略命令的返回值,只需使用'&'。 – Joey 2011-03-29 19:44:50

+0

@Joey,好点,编辑。 – Kevin 2011-03-29 19:46:29

+0

完美,这正是我所寻找的,谢谢:) – Rob 2011-03-29 19:56:56

相关问题