使用“start”命令并将参数传递给已启动的程序
Posted
技术标签:
【中文标题】使用“start”命令并将参数传递给已启动的程序【英文标题】:Using the "start" command with parameters passed to the started program 【发布时间】:2010-09-14 07:43:10 【问题描述】:我在 Virtual PC 2007 中有一个虚拟机。
要从桌面启动它,我在批处理文件中有以下命令:
"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
但这会在主机上留下一个 dos 提示,直到虚拟机关闭,然后我退出 Virtual PC 控制台。这很烦人。
所以我将命令改为使用 START 命令:
start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch
但它会阻塞传递到 Virtual PC 的参数。
START /?
表示参数确实在那个位置。有没有人使用 START 启动具有多个命令行参数的程序?
【问题讨论】:
【参考方案1】:
/b
参数
start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
【讨论】:
这个参数有什么作用? @AzeezahM /b 表示不会打开新的 cmd 窗口。但这并不能回答 op 的问题。【参考方案2】:这些答案都不适合我。
相反,我不得不使用调用命令:
Call "\\Path To Program\Program.exe" <parameters>
我不确定这是否真的在等待完成...我正在安装的 C++ Redistributable 运行速度足够快,这并不重要
【讨论】:
【参考方案3】:您可以通过使用引号 [/D"Path"
] 使用 /D
only 指定路径而不是路径+程序。看来,随后同一行上的所有代码都恢复正常,这意味着您不需要分隔路径和文件。
start /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE
或:
start /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE
将以默认网页启动 IE。
start /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com
以 Bing 开头,但不会重置您的主页。
/D
代表“目录”,使用引号即可!
错误示例:
start /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
给予:
错误“当前目录无效。”
/D
后面只能跟目录路径。然后空间和您希望启动/运行的批处理文件或程序
在 XP 下测试和工作,但 windows Vista/7/8 可能需要对 UAC 进行一些调整。
-Mrbios
【讨论】:
【参考方案4】:如果你必须在任何参数中使用双引号,你会得到错误“'c:\somepath' is not Recognized a internal or external command, operable program or batch file”。 使用双引号时,我建议使用以下解决方案: https://***.com/a/43467194/3835640
【讨论】:
【参考方案5】:START 有一个特殊之处,即在第一个参数周围使用双引号。如果第一个参数有双引号,它会将其用作新窗口的可选 TITLE。
我相信你想要的是:
start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch
换句话说,在程序名称之前给它一个空标题来伪造它。
【讨论】:
这是否已弃用?在 Win 7 中,我得到Start-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
谁能想到。仅是对您的答案的支持数量就足以让 Microsoft 解决此“特殊性”。
@geotheory 我意识到这是一个旧评论,但在 PowerShell 中,start 是 Start-Process 的别名。在 cmd.exe (有点过时,但未弃用)中,“开始”是不同的。它们都用于启动其他进程,但 start 是 cmd 中的旧嵌入式命令。
碰巧(关于从任务管理器启动URL)你知道打开浏览器时(不改变当前页面)静默打开新标签页的参数吗?【参考方案6】:
如果你想在c:盘的test文件夹中传递参数和你的.exe文件
start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch
如果您不想在 c: 驱动器的测试文件夹中传递参数和 .exe 文件
start "" "C:\test\test1.exe" -pc My Name-PC -launch
如果您不想在 H: (Any Other)drive 的测试文件夹中传递参数和 .exe 文件
start "" "H:\test\test1.exe" -pc My Name-PC -launch
【讨论】:
【参考方案7】:“特殊性”中的答案是正确的,直接回答了问题。正如 TimF 所回答的,由于第一个参数用引号引起来,因此它被视为窗口标题。
另请注意,Virtual PC 选项被视为“启动”命令本身的选项,对“启动”无效。这适用于所有具有“启动”命令的 Windows 版本。
'start' 将引用的参数视为标题的问题比仅发布的问题更令人讨厌。如果你运行这个:
start "some valid command with spaces"
你会得到一个新的命令提示符窗口,窗口标题的结果很明显。 更烦人的是,这个新窗口并没有继承自定义的字体、颜色或窗口大小,它只是 cmd.exe 的默认设置。
【讨论】:
【参考方案8】:将“Virtual PC.exe”更改为文件夹中没有空格的名称,如“VirtualPC.exe”。
当您使用“”编写start "path"
时,CMD 会启动一个新的 cmd 窗口,其中路径为标题。
把名字改成不带空格的名字,写在记事本上,然后像Name.cmd或Name.bat一样保存:
CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit
此命令会将CMD重定向到文件夹,启动VirualPC.exe,等待2秒然后退出。
【讨论】:
如果软件更新了会怎样?突然间,你得到了一个孤立的 virtualpc.exe。【参考方案9】:空格是 DOS/CMDs 问题,所以您应该通过以下方式转到路径:
cd "c:\program files\Microsoft Virtual PC"
然后只需通过以下方式启动 VPC:
start Virtual~1.exe -pc MY-PC -launch
~1
表示第一个exe
以"Virtual"
开头。因此,如果有 "Virtual PC.exe"
和 "Virtual PC1.exe"
,第一个是 Virtual~1.exe
,第二个是 Virtual~2.exe
,依此类推。
或者使用像 VirtualBox 这样的 VNC-Client。
【讨论】:
这看起来是一个合理的解决方法,但它并没有真正解决被接受的答案所涵盖的根本问题。 如果没有启用短文件名,这将不起作用。我总是在我的系统中禁用 8.3 文件名【参考方案10】:将命令放入批处理文件中,并使用参数调用它。
另外,你试过了吗? (移动结束引号来封装参数)
start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"
【讨论】:
【参考方案11】:你试过了吗:
start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"
?
【讨论】:
【参考方案12】:您可以在桌面上创建快捷方式,而不是批处理文件。
将目标设置为:
"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
一切就绪。由于您没有启动命令提示符来启动它,因此不会有 DOS 框。
【讨论】:
以上是关于使用“start”命令并将参数传递给已启动的程序的主要内容,如果未能解决你的问题,请参考以下文章
Process.Start - 将 html 代码作为参数传递给 exe