以下cmd脚本之间有什么区别?


10

我尝试通过批处理文件启动几个程序,但是遇到了问题,但这已经过去了。

我对脚本和命令行还比较陌生,这就是我的问题:以下cmd脚本之间有什么区别?

这一个被接受

Start Chrome

(我在这里猜测某些已安装的程序可以按标题识别,即使dir不在程序仍启动的chrome.exe所在的位置,注册表项也可以在其中起作用?)

这个也可以

cd "FOO_DIR"
start FOO.exe

但是这些不

start "FOO_DIR\FOO.exe"

(在不启动FOO.exe的情况下打开一个新窗口)

start /B "FOO_DIR\FOO.exe"

(再次写版权文本,什么也不做)

(作业系统Windows 7 x64)

Answers:


17
Start Chrome

这是可行的,因为Chrome的可执行文件位于PATH环境变量中的文件夹中。start在该变量的所有文件夹中查找程序。环境变量PATHEXT包含要查找的文件扩展名列表,.exe默认情况下,您无需编写即可chrome.exe


start "FOO_DIR\FOO.exe"

这是行不通的,因为start如果用引号将第一个参数用作窗口标题。因此,这将打开一个新的CMD "FOO_DIR\FOO.exe"以其标题。

为了避免这种情况,您只需在命令之前添加一个空的title参数:

start "" "FOO_DIR\FOO.exe"

此外,对于AFAIR,在使用命令行开关启动可执行文件时,标题是必填项
Abstrask 2014年

1
这并不是说start希望标题是它的第一个参数(否则start chrome将不起作用),而是如果它的第一个参数被引用了,它希望它是一个标题。
jamesdlin 2014年

@jamesdlin啊,关于这个文档有点含糊,谢谢。我据此编辑了答案
crater2150

5

尝试添加"title"或至少""之后start像这样:

start "title" "FOO_DIR\FOO.exe"

要么

start "title" /B  "FOO_DIR\FOO.exe"

问题的根本原因是,“”引号中的第一个参数被解释title为新cmd窗口的参数。

同样有助于查看命令参考(链接)


谢谢,这澄清了区别。对于第一个文件,我认为“仅通过键入文件名作为命令,就可以通过其文件关联来调用非可执行文件。” 这就是为什么名字足够的原因……(虽然不确定)
Smith先生

如果您使用的是第一个示例,那么start chrome我相信调用chrome是可行的,因为它在注册表中的某个位置位于此处:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths如果您查找chrome.exe,则很有可能查找包含可执行文件完整路径的条目。
Art Gertner 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.