@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?
会很愉快地工作。