簡體   English   中英

Windows批處理文件,通過子文件夾循環

[英]Windows batch file with loop through subfolders

我沒有成功編寫適當的批處理文件,將不勝感激。

假設我在D:\\ Test \\中有一個稱為script.exe的exe。 要執行此script.exe,它需要一個.bin文件的附加參數(例如bin01.bin,bin02.bin)。

因此,它將類似於:script.exe -i bin01.bin,script.exe -i bin01

我希望腳本與所有子文件夾中的所有.bin文件一起執行

D:\\ Test \\ script.exe
D:\\ Test \\ Folder01 \\ bin01.bin
D:\\ Test \\ Folder01 \\ bin02.bin
D:\\ Test \\ Folder02 \\ bin01.bin
D:\\ Test \\ Folder03 \\ bin01.bin

有人可以在這里幫助我嗎? 非常感謝。

要從命令提示符窗口直接執行:

for /R "D:\Test" %I in (*.bin) do @D:\Test\script.exe -i "%I"

並在批處理文件中使用相同的命令行:

@for /R "D:\Test" %%I in (*.bin) do @D:\Test\script.exe -i "%%I"

命令FOR在目錄D:\\Test和所有子目錄中遞歸搜索與通配符模式*.bin匹配的文件。

找到的每個文件的名稱均帶有區分大小寫的循環變量I完整路徑。

FOR為每個文件執行可執行文件D:\\Test\\script.exe其中第一個參數-i和第二個參數是找到的文件的名稱,完整路徑用雙引號括起來,適用於任何* .bin文件名,甚至包含空格的文件名或以下字符之一: &()[]{}^=;!'+,`~

整個FOR命令行開頭的@只是告訴Windows命令解釋程序cmd.exe在預處理后默認執行之前不回顯命令行,然后執行控制台窗口。

D:\\Test\\script.exe開頭的@避免在循環的每次迭代中將此命令輸出到控制台。

通常,在批處理文件開始時, @echo off執行前的命令行回顯,如下所示。

@echo off
for /R "D:\Test" %%I in (*.bin) do D:\Test\script.exe -i "%%I"

為了了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並非常仔細地閱讀每個命令顯示的所有幫助頁面。

  • echo /?
  • for /?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM