在 Windows 命令提示符中运行
"C:\foo.exe" file.asdf
然后foo.exe打开。
但是,如果我运行:
start "C:\foo.exe" file.asdf
然后打开bar.exe。
bar.exe 被定义为 Windows 注册表中与 *.asdf 文件关联的默认应用程序。
** 注册表值:**
注册表项 | 价值 |
---|---|
注册表项HKEY_CLASSES_ROOT | 应用程序.asdf |
HKEY_CLASSES_ROOT\APPLICATION.asdf\shell\open\命令 | “C:\bar.exe” “%1” |
有人可以解释为什么会出现这种情况,以及如何在不篡改注册表的情况下让启动命令运行 foo.exe?
答案1
从技术上来说,语法start
更接近于:
start [<title>] [<program> [<parameter>]]
因此,像这样的命令将尝试test.bat
以以下窗口标题运行notepad
:
start "C:\WINDOWS\system32\notepad.exe" test.bat
用记事本打开test.bat
,给出start
要使用的标题:
start "notepad" "C:\WINDOWS\system32\notepad.exe" test.bat
有关语法规则的更多信息,请查看开始文档。