启动批处理文件在第二个命令上停顿。

3
我创建了一个启动批处理文件,它看起来像这样:

 taskkill /im RemoteDesktopManager.exe
 C:\Users\kheradmand\AppData\Local\Google\Chrome\Application\chrome.exe
 "C:\Program Files (x86)\JetBrains\PhpStorm 7.1.2\bin\PhpStorm.exe"
 "C:\Program Files\Mozilla Firefox\firefox.exe"

它可以做前两项,但无法继续下去,它们都存在。

我该如何修复这个问题?

更新:我尝试了@phd443322提供的建议,并编写了以下内容:

taskkill /im RemoteDesktopManager.exe
start "" /w C:\Users\kheradmand\AppData\Local\Google\Chrome\Application\chrome.exe
start "" /w "C:\Program Files (x86)\JetBrains\PhpStorm 7.1.2\bin\PhpStorm.exe"
start "" /w "C:\Program Files\Mozilla Firefox\firefox.exe"

有趣的是,每个命令仍然等待该程序关闭才能继续执行下一个命令。

那么为什么还无法正常工作?


1
你能在每个.exe调用前面加上"start"吗?http://superuser.com/questions/413939/how-to-start-a-program-with-command-line-arguments-on-windows-cmd-with-start - kenny
你尝试过phd443322和Magoo的建议了吗? - foxidrive
它等待是因为你使用了/w选项告诉它要等待。因此,请删除/w选项。 - Hans Passant
2个回答

3
下面是一个有效的批处理文件,这是最初由phd443322建议的:
taskkill /im RemoteDesktopManager.exe
start "" C:\Users\kheradmand\AppData\Local\Google\Chrome\Application\chrome.exe
start "" "C:\Program Files (x86)\JetBrains\PhpStorm 7.1.2\bin\PhpStorm.exe"
start "" "C:\Program Files\Mozilla Firefox\firefox.exe"

我读了他写的东西,但是我无法理解其中的含义!所以感谢您让它变得清晰明了。 - Developerium
请问您能否将悬赏分配给这个答案? - Aacini
我想这样做,但是网站上显示“您需要在16小时后才能颁发悬赏奖励。”!! - Developerium
@Aacini 这样可以消除执行时的延迟。谢谢,但如果您能解释一下原因那就太好了。因为仅添加 start "C:\..." 无法解决问题,但是添加 start "" "C:\..." 就可以了。为什么呢? - Roshana Pitigala

1
批处理文件等待程序退出,与交互式不同。这些规则记录在“Start”命令中。
如果启用了命令扩展,则通过命令行或START命令进行的外部命令调用会发生以下更改:
非可执行文件可以通过它们的文件关联直接调用,只需键入文件名作为命令即可(例如,WORD.DOC将启动与.DOC文件扩展名相关联的应用程序)。有关如何从命令脚本中创建这些关联,请参见ASSOC和FTYPE命令。
当执行一个32位GUI应用程序时,CMD.EXE不会在返回到命令提示符之前等待该应用程序终止。如果在命令脚本中执行,则不会发生此新行为。
当执行的命令行的第一个标记是字符串“CMD”而没有扩展名或路径限定符时,“CMD”将替换为COMSPEC变量的值。这可以防止从当前目录中拾取CMD.EXE。
当执行的命令行的第一个标记不包含扩展名时,CMD.EXE使用PATHEXT环境变量的值来确定要查找哪些扩展名以及以什么顺序查找。PATHEXT变量的默认值为:
    .COM;.EXE;.BAT;.CMD

Notice the syntax is the same as the PATH variable, with
semicolons separating the different elements.

当查找可执行文件时,如果没有任何扩展名匹配,则会查看名称是否与目录名称匹配。如果匹配,则START命令在该路径上启动资源管理器。如果从命令行完成,则相当于对该路径执行CD /D操作。


例如,我该如何修复Chrome?我想让它在我的环境中运行。 - Developerium
开始 "" /w chrome.exe 注意,start命令类似于启动 - 运行解析器,因此与cmd正常执行有不同的规则。键入start /?获取帮助。 - phd443322
phd443322,@kenny 我更新了我的答案,你能给我你的想法吗? - Developerium
1
抱歉,我反向操作了,请删除“/w”,这会导致等待。默认情况下,“Start”不会等待,而在批处理文件中,GUI程序的“cmd”会等待。 - phd443322
1
当您按照phd443322的建议从“start”命令中删除“/w”时,会发生什么? - Magoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接