2011-03-29 80 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

相關問題