如何使用.bat-script重新启动.exe文件

时间:2009-06-17 17:21:11

标签: batch-file scripting

我有目录结构:

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

提前谢谢。

4 个答案:

答案 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文件中,请记住将%符号加倍)