我曾尝试通过批处理文件启动几个程序并遇到了问题,但那已经是过去了。
我对脚本和命令行还比较陌生,我的问题是:以下 cmd 脚本之间有什么区别?
此人已接受
Start Chrome
(我猜测一些已安装的程序是通过标题识别的,即使目录不是 chrome.exe 所在的位置,程序仍然会启动,注册表项在这方面起着作用?)
这个也有效
cd "FOO_DIR"
start FOO.exe
然而这些并没有
start "FOO_DIR\FOO.exe"
(打开一个新窗口而不启动 FOO.exe)
start /B "FOO_DIR\FOO.exe"
(再次写入版权文本,不执行其他任何操作)
(操作系统 Windows 7 x64)
答案1
Start Chrome
这个可以工作,因为 Chrome 的可执行文件位于PATH
环境变量中的文件夹中。start
查找该变量中的所有文件夹中的程序。环境变量PATHEXT
包含要查找的文件扩展名列表,并且.exe
默认情况下包含,因此您无需写入chrome.exe
。
start "FOO_DIR\FOO.exe"
这不起作用,因为start
如果引用了它,它将使用它的第一个参数作为窗口标题。因此这将打开一个新的 CMD,"FOO_DIR\FOO.exe"
其标题为。
为了避免这个问题,您只需在命令前添加一个空的标题参数:
start "" "FOO_DIR\FOO.exe"
答案2
尝试添加"title"
或至少""
像start
这样:
start "title" "FOO_DIR\FOO.exe"
或者
start "title" /B "FOO_DIR\FOO.exe"
问题的根本原因是“”引号中的第一个参数被解释为title
新cmd
窗口的参数。
查看命令参考也有帮助(关联)