为什么 Start /Wait 与 URL 一起使用时不等待?

问题描述 投票:0回答:2

当我从批处理文件启动应用程序并且我想等到第一个应用程序完成时,我会像这样启动/等待,效果很好:

start /WAIT "" "notepad.exe"
start /WAIT "" "notepad.exe"

虽然没有特别需要引号,但我养成了使用引号的习惯,以支持路径中包含空格的命令。

最近我试图通过 URL 启动浏览器,我想等待用户关闭浏览器。但是,当与如下 URL 一起使用时,批处理文件不会等待:

start /WAIT "" "http://stackoverflow.com/"
start /WAIT "" "http://stackoverflow.com/"

我正在 Windows 7 上测试此功能,我的默认浏览器是 Firefox。

为什么等待对 URL 不起作用以及如何解决此问题?

注意:我不想启动特定的浏览器。我想让用户选择浏览器,从而启动默认浏览器。这有效:

start /WAIT "" "firefox" "http://stackoverflow.com/"
start /WAIT "" "firefox" "http://stackoverflow.com/"
windows batch-file
2个回答
0
投票

这似乎是因为它正在通过使用“文件类型”关联来启动程序,并且

/w
未在该模式下实现。

我认为唯一的解决方法是读取注册表以检测默认浏览器和路径,然后使用 URL 启动该浏览器,这样

/w
就可以正常工作了。


0
投票

开始/等待 /WAIT 选项应该反转 START 的默认“并行运行”行为,但您的结果将根据正在启动的项目而有所不同,例如:

回声启动 启动/等待“演示”calc.exe 回声完成 以上将启动计算器并等待,然后再继续。但是,如果您将 calc.exe 替换为 Winword.exe,以运行 Word,则 /wait 将停止工作,这是因为 Winword.exe 是一个存根,它启动主 Word 应用程序然后退出。

启动批处理文件时也会出现类似的问题,默认情况下 START 将运行相当于 CMD /K 的命令,它会打开第二个命令窗口并使其保持打开状态。在大多数情况下,您希望批处理脚本完成,然后只需关闭其 CMD 控制台即可恢复初始批处理脚本。这可以通过显式运行 CMD /C ...

来完成

回声启动 开始/等待“演示”CMD /c demoscript.cmd 回声完成 添加 /B 以使所有内容在单个窗口中运行。

在批处理文件中,另一种方法是使用 TIMEOUT 来延迟单个命令的处理。

© www.soinside.com 2019 - 2024. All rights reserved.