2010-01-11 56 views
8

例如,您在批處理文件中有重命名命令,並且您想要在當前目錄和所有子目錄上執行該文件。如何遞歸執行windows批處理命令?

+0

你有具體的例子嗎? – 2010-01-11 18:31:24

+1

改爲使用PowerShell。 :-) – 2010-02-04 19:14:13

+0

另請參閱:http://stackoverflow.com/a/25381530/99777 – joeytwiddle 2016-06-06 01:34:20

回答

16

假設你的批被命名爲類似myrename.cmd,那麼你可以很容易地做到以下幾點:

call myrename.cmd 
for /r /d %%x in (*) do (
    pushd "%%x" 
    call myrename.cmd 
    popd 
) 

第一行會運行當前目錄,for循環將遞歸(/r)在所有迭代目錄(/d)並在圓括號中執行該部分。我們在裏面做的是將目錄更改爲我們當前正在迭代的目錄pushd,它具有很好的屬性,您可以使用popd撤消目錄更改 - 然後運行該命令,然後該命令將運行在目錄中我們只是轉向。

這假設批處於路徑中的某處。如果沒有,只是碰巧躺在上面的批處理文件所在的位置,那麼你可以使用

"%~dp0myrename.cmd" 
+0

非常感謝你 – 2010-01-11 22:42:14

+0

最後一點是什麼意思? – 2017-03-01 17:05:13

+0

@VirgilIerubino:最後一點?帶有'%〜dp0'的部分?請參閱'help for'獲取解釋。 – Joey 2017-03-01 17:45:59

相關問題