我有目录结构:
DIR
|-component_name
|-source
|-setup.exe
|-another_component_name
|-source
|-setup.exe
|-yet_another_component_name
|-source
|-setup.exe
and so on...
在像“component_name”这样的每个目录中,我都有setup.exe
文件,它将当前组件安装到Delphi中的调色板组件中。我需要制作DIR/setup.bat
文件,该文件将在setup.exe
中的每个组件目录中依次开始DIR
。
提前谢谢。
答案 0 :(得分:1)
示例:强>
for /f %%i in ('dir /s /b setup.exe') do (
%%i
)
答案 1 :(得分:1)
我猜测,当你说“by-turn”你的意思是“一个接一个”(即执行第一个setup.exe,让它完成,执行第二个setup.exe,让它完成,等等)。
如果setup.exe是基于控制台,那么您可以直接调用.EXE。每个setup.exe都将附加到.BAT文件的控制台窗口,从而阻止其执行,直到setup.exe完成。类似于Bubbafat给出的for循环示例:
for /f %%i in ('dir /b /s setup.exe') do %%i
但是,如果setup.exe是 gui-based ,那么您将必须使用CALL命令。这将导致.BAT文件在执行更多命令之前等待被调用进程终止:
for /f %%i in ('dir /b /s setup.exe') do call %%i
现在,如果我误解了您和您的EXE是基于控制台的并且您希望同时执行它们而不等待每个EXE依次完成,那么您可以使用START命令。这将为每个EXE打开一个新的控制台窗口。
for /f %%i in ('dir /b /s setup.exe') do start %%i
注意:从“for / r”类型循环更改为“for / f”,因为它只返回现有路径(与“for / r”不同,后者生成可能不存在的路径)。
答案 2 :(得分:0)
我想你在问“如何运行目录树中的每个setup.exe?”。
如果提前知道列表,您可以创建一个接一个地运行程序的批处理文件。 E.g。
component_name\setup.exe
another_component_name\setup.exe
yet_another_component_name\setup.exe
但是如果列表不是静态的,并且它们运行的顺序并不重要,那么你可以在批处理文件中使用for循环,如下所示:
for /F %i in ('dir /B /S *.log') do %i
要预览这样做会在最后一个“%i”之前添加“echo”,如:
for /F %i in ('dir /B /S *.log') do echo %i
如果这不是您的意思,请澄清您的要求,因为它不清楚。
答案 3 :(得分:0)
使用此:
for /r %i in (setup.exe) do %i
(或者,如果您将其嵌入到.bat文件中,请记住将%符号加倍)