bat 程序中调用外部程序并等待

看下面的这个代码:

 for /L %%f in (1,1,10) do (
 echo %%f
 rem do something
 “C:\\Program Files\\Mozilla Firefox\\firefox.exe”
 )

这段代码的行为为连续打开10个firefox。 如果我在每次打开firefox之前想做一些环境上的改变,那么上面的代码就无法达到这个效果。 如果想要程序依次打开firefox,那么程序应该写成

 for /L %%f in (1,1,10) do (
 echo %%f
 rem do something
 start “title” /WAIT “C:\\Program Files\\Mozilla Firefox\\firefox.exe”
 )


其中的/WAIT 表示等待程序结束, “title”参数是必须的, 不然它会把后面的firefox.exe作为title 。 详细可以参考start的帮助文件。 在后来的实验中看到, 如果在这段程序运行之前就有一个firefox在运行,那么还是会连着打开10个firefox。 个中原因还不太清楚。我的系统是XP。

C:\firefox_addon\appreg>start /?         

启动另一个窗口运行指定的程序或命令。       

START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]        

 [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]      

 [/WAIT] [/B] [command/program]      

 [parameters]        

 "title" 在窗口标题栏中显示的标题。       

 path 起始目录       

 B 在不创建新窗口的情况下开始应用程序。 非         

 启动 ^C 处理,否则该应用程序会忽略 ^C 处理;      

 ^Break 是唯一可以中断该应用程序的方式      

 I 新环境是传递给 cmd.exe 的原始环境,        

 而不是当前环境         

 MIN 开始时窗口最小化        

 MAX 开始时窗口最大化        

 SEPARATE 在分开的空间内开始 16 位 Windows 程序      

 SHARED 在分共享的空间内开始 16 位 Windows 程序       

 LOW 在 IDLE 优先级类别开始应用程序      

 NORMAL 在 NORMAL 优先级类别开始应用程序         

 HIGH 在 HIGH 优先级类别开始应用程序         

 REALTIME 在 REALTIME 优先级类别开始应用程序         

 ABOVENORMAL 在 ABOVENORMAL 优先级类别开始应用程序       

 BELOWNORMAL 在 BELOWNORMAL 优先级类别开始应用程序       

 WAIT 启动应用程序并等候它结束       

 command/program         

 如果是内部 cmd 命令或批文件,那么该命令处理器是      

 用 /K 命令行开关运行 cmd.exe 的。这表示该窗口在命令运行      

 后仍然在。      

 如果不是内部 cmd 命令或批文件,则是一个程序,      

 作为窗口应用程序或控制台应用程序运行。         

 parameters 这些为传送到命令/程序的参数       

...


本文地址: http://www.bagualu.net/wordpress/archives/5131 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注