将“ start”命令与传递给已启动程序的参数一起使用


223

我在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启动带有多个命令行参数的程序?

Answers:


466

START具有一个特殊性,其中包含第一个参数的双引号。如果第一个参数用双引号引起来,它将使用它作为新窗口的可选TITLE。

我相信您想要的是:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

换句话说,在程序名称前给它一个空标题以伪造它。


2
不推荐使用吗?在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
geotheory,2014年

1
谁能想到的。仅仅对您的答案的投票数量应该足以成为Microsoft解决此“特殊性”的理由。
Piyush Soni 2015年

7
@geotheory我意识到这是一个旧注释,但是在PowerShell中,start是Start-Process的别名。在cmd.exe(有点陈旧,但不建议过时)中,“开始”是不同的。它们都用于启动其他进程,但是start是cmd中的旧嵌入式命令。
亚当·普洛彻

这让我很头疼。感谢您的解决方案!
uceumern

15

您可以在桌面上创建快捷方式,而不是批处理文件。

将目标设置为:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

你们都准备好了。由于您没有启动命令提示符来启动它,因此不会有DOS Box。


3

这些空格是DOS / CMD问题,因此您应该通过以下方式进入路径:

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,依此类推。

或者使用VNC客户端(如VirtualBox)。


1
这看起来是一个合理的解决方法,但它并未真正解决潜在的问题,该问题已被接受的答案所涵盖。
2013年

1
如果未启用短文件名,则此功能将无效。我总是在系统中禁用8.3文件名
phuclv

1

这些答案都不对我有用。

相反,我不得不使用Call命令:

Call "\\Path To Program\Program.exe" <parameters>

我不确定这实际上是否等待完成...我安装的C ++可再发行组件的运行速度足够快,没关系


@rene感谢您的编辑。如果添加更多答案,我将确保使用代码块格式
JustAnotherMikhail

0

“特殊性”中的答案是正确的,可以直接回答问题。正如TimF回答的那样,由于第一个参数用引号引起来,因此将其视为窗口标题。

还要注意,Virtual PC选项被视为“启动”命令本身的选项,并且对于“启动”无​​效。这对于具有“ start”命令的所有Windows版本都是如此。

“开始”将引用的参数视为标题的问题比发布的问题更令人讨厌。如果运行此命令:

start "some valid command with spaces"

您将获得一个新的命令提示符窗口,其中包含明显的窗口标题结果。更令人讨厌的是,这个新窗口没有继承自定义的字体,颜色或窗口大小,它只是cmd.exe的默认设置。


0

如果要在c:驱动器的测试文件夹中传递参数和.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的测试文件夹中传递参数和您的.exe文件,请执行以下操作:

start "" "H:\test\test1.exe" -pc My Name-PC -launch


0

如果必须在任何参数上使用双引号,则会出现错误“'c:\ somepath'无法识别为内部或外部命令,可操作程序或批处理文件”。我建议使用双qoutation标记时下面的解决方案:https ://stackoverflow.com/a/43467194/3835640


0

您可以使用引号将[ /D"Path"]用于/D 用于指定路径,而不能用于路径+程序。看来,随后同一行上的所有代码都恢复正常,这意味着您无需分隔路径和文件。

    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


-1

/b 参数

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

此参数有什么作用?
Azeezah M

3
@AzeezahM / b表示将不会打开新的cmd窗口。但是,这无法回答op的问题。
aclave1

-4

你有没有尝试过:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"


-4

将命令放入批处理文件中,然后使用参数进行调用。

另外,您尝试过吗?(移动结束引号以封装参数)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"

-4

将“ 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秒钟然后退出。


1
如果软件得到更新会怎样?突然,您有一个孤立的virtualpc.exe。
Michael Beck
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.