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

我在Virtual PC 2007中有一个虚拟机。

要从桌面启动它,我在batch file中有以下命令:

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

但是,在主机上留下一个dos提示符,直到虚拟机closures,然后退出Virtual PC控制台。 这很烦人

所以我改变了我的命令来使用START命令,而是:

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

但它扼杀了传递给虚拟PC的参数。

START /? 表示参数确实在该位置。 有没有人用START来启动一个带有多个命令行参数的程序?

START有一个涉及第一个参数的双引号的特性。 如果第一个参数具有双引号,则将其用作新窗口的可选TITLE。

我相信你想要的是:

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

换句话说,在程序的名字之前给它一个空的标题来伪造它。

而不是一个batch file,您可以在桌面上创build一个快捷方式。

将目标设置为:

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

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

空格是DOS / CMDs问题,所以你应该去的path通过:

 cd "c:\program files\Microsoft Virtual PC" 

然后通过以下方式启动VPC:

 start Virtual~1.exe -pc MY-PC -launch 

~1表示开头为"Virtual"的第一个exe 。 所以如果有一个"Virtual PC.exe"和一个"Virtual PC1.exe" ,第一个将是"Virtual PC1.exe"和第二个"Virtual PC1.exe"等等。

或者使用像VirtualBox这样的VNC客户端。

可以使用[/ D“Path”] use / D来指定path,而不是path+程序。 看起来,跟在同一行上的所有代码都可以回到正常的意义上,这意味着你不需要分开path和文件。

 start /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE 

:: 要么

 start /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE 

::将使用默认网页启动IE。

启动/ D“TITLE”“C:\ Program Files \ Internet Explorer \”IEXPLORE.EXE http://www.bing.com ::从Bing开始,但不会重置您的主页。

:: / D代表“目录”,使用引号即可!

:: WRONG start / D“TITLE”“C:\ Program Files \ Internet Explorer \ IEXPLORE.EXE”::错误“ 当前目录无效 ”/ D只能跟一个目录path。
::然后空间和你想启动/运行的batch file或程序“

testing和工作在XP下,但Windows Vista / 7/8可能需要对UAC进行一些调整。

-Mrbios

“特殊性”的答案是正确的,直接回答了这个问题。 正如TimF所回答的那样,由于第一个参数是用引号括起来的,所以它被当作窗口标题。

另外请注意,虚拟PC选项被视为“开始”命令本身的选项,并且不适用于“开始”。 所有具有“开始”命令的Windows版本都是如此。

这个问题与“开始”对待引用参数作为一个标题更令人讨厌,只是发布的问题。 如果你运行这个:

 start "some valid command with spaces" 

你会得到一个新的命令提示符窗口,窗口标题的结果很明显。 更麻烦的是,这个新窗口不会inheritance自定义的字体,颜色或窗口大小,它只是cmd.exe的默认值。

如果你想传递参数和你的.exe文件在c:驱动器的testing文件夹中

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

如果您不想在c:drive的testing文件夹中传递参数和.exe文件

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

如果您不想在H:(Any Other)驱动器的testing文件夹中传递参数和您的.exe文件

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

“/ b”参数

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

如果必须在任何参数上使用双引号,则可能会出现错误“'c:\ somepath'不能识别为内部或外部命令,可操作程序或batch file”。 使用double qoutation标记时,我build议下面的解决scheme: https ://stackoverflow.com/a/43467194/3835640

将“Virtual PC.exe”更改为文件夹中没有空格的名称,如“VirtualPC.exe”。 当你用“”开始写start "path" ,CMD会以path为标题开始一个新的cmd窗口。 将名称更改为没有空格的名称,在记事本中写入,并保存为Name.cmd或Name.bat之后:

 CD\ CD Program Files CD Microsoft Virtual PC start VirtualPC.exe timeout 2 exit 

这个命令会将CMDredirect到文件夹,启动VirualPC.exe,等待2秒后退出。

你有没有尝试过:

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

把这个命令放到一个batch file中,然后用参数调用它。

还有,你试过这个吗? (移动结束引用封装参数)

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