我找不到具體提到我的問題,雖然它似乎是一個常見問題。如何遞歸循環訪問特定文件類型的目錄?
我試圖循環遍歷目錄中的所有批處理文件,無論多深。
以下是我有:
for /f "tokens=* delims=" %%a in ('dir %DIR% /s /b *.bat') do (
if not exist %%a\* echo %%a
)
凡DIR預先設定。我只迴應文件。
顯然這是錯誤的,因爲它首先輸出所有文件,然後是所有批處理文件。
似乎我需要以某種方式合併* .bat說明符和%DIR%變量,但我不知道如何做到這一點。
這對我有用。我很好奇看到提供的兩個答案背後的推理 - 這個看起來簡單得多。對該主題的任何貢獻? – Rail24 2014-10-08 18:57:28
@ Rail24 - 如果DO不修改樹列表,則此方法是首選,因爲它更快,並且可以在文件名中使用unicode。但是,假設DO添加了新文件,那麼這些新創建的文件也可能會迭代,這取決於它們如何排序以及內部緩衝區的大小。如果DO修改或添加文件,則需要使用DIR/S/B/A-D的FOR/F,因爲它會在開始迭代之前緩存整個列表的結果。但是FOR/F與unicode不兼容。 – dbenham 2014-10-08 22:04:35