@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\one"
PUSHD "%sourcedir%"
FOR /r %%a IN (*.ext1) DO (
PUSHD "%%~dpa"
ECHO(c:\program1 "%%~nxa"
popd
)
popd
GOTO :EOF
您需要更改sourcedir
的設置以適合您的情況。
在所有可能的情況下,這就是所有你需要的 - 或者至少,這是一個框架。
請注意,該例程將簡單地ECHO
所需的命令。這允許無害的測試(在代表性的子樹上)確保該過程應該在整個樹上工作。
更改ECHO(c:\program1
到c:\program1
每個.ext1
文件中的子樹應該執行的第一個程序。程序檢查文件是否與可執行文件存在於同一個目錄中是不尋常的 - 如果它不會取得路徑,那麼將假定「當前目錄」。
您不會說程序program1
是否從whatever.ext1
生成名爲whatever.ext2
的文件,或者它是否生成somethingradicallydifferent.ext2
。很可能,將使用相同的名稱。
如果是這樣的情況,則運行所述第二程序,只需添加後
ECHO(c:\program1 "%%~nxa"
ECHO(c:\program2 "%%~na.ext2"
否則,簡單地重複整個塊,改變ext1
到ext2
(我假設你可以弄清楚我已經縮寫了擴展名)
如果,離機會程序(一個或多個)必須在同一目錄下,然後用
echo n|C:\program1 . >nul 2>nul
ECHO(program1 "%%~nxa"
更換
ECHO(c:\program1 "%%~nxa"
(和同上的方案2,很明顯)。這裏的n
是echo
編入copy
,這樣copy
只會發生一次。這可能會有所改進,但從99年開始,它可能只是理論上的要求。9999%可能執行c:\program?
會很愉快地工作。