start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
Se você ler a lista de parâmetros com start /?
:
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
command/program
If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.
If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.
parameters These are the parameters passed to the command/program.
Espera um title
entre aspas ( "
). Como o caminho do seu programa incluía aspas, ele foi interpretado como o título. Adicionar um título explícito (nesse caso, vazio ""
) funciona.
Um método alternativo é usar a /d
opção para especificar o caminho. Especificamente:
start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"
Parece /d
que o caminho é o primeiro argumento após a opção, mesmo que esteja entre aspas, e se o próximo argumento não for entre aspas, isso funcionará. Tudo depois do que é reconhecido como comando / programa é passado como parâmetro para esse comando / programa. Observe que isso não funcionará se o comando / programa tiver espaços no nome, por exemplo VBox Headless.exe
, pois isso exigiria aspas e seria reconhecido como um título.
No geral, o primeiro método (título explícito) é provavelmente melhor. Foi uma má escolha de design por parte da Microsoft; eles realmente deveriam ter adicionado uma opção de título em vez de "o primeiro argumento é colocado entre aspas?".
start /b
, não coloque a máquina virtual em segundo plano. Eu tenho que inventar outra coisa então.