start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
Wenn Sie die Parameterliste mit start /? lesen:
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.
Es wird eine in Anführungszeichen eingeschlossene title erwartet ("). Da Ihr Programmpfad Anführungszeichen enthielt, wurde er als Titel interpretiert. Das Hinzufügen eines expliziten Titels (in diesem Fall leer, "") funktioniert.
Eine alternative Methode ist die Verwendung des Schalters /d zur Angabe des Pfades. Konkret:
start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"
Es scheint, dass das erste Argument nach der Befehlszeilenoption /d als Pfad verwendet wird, auch wenn es zitiert wird, und wenn das nächste Argument nicht zitiert wird, funktioniert dies. Alles nach dem, was als Befehl/Programm erkannt wird, wird als Parameter an diesen Befehl/Programm übergeben. Beachten Sie, dass dies nicht funktioniert, wenn der Befehl/das Programm Leerzeichen im Namen enthält, z.B. VBox Headless.exe, da dies Anführungszeichen erfordern und als Titel erkannt werden würde.
Insgesamt ist die erste (explizite Titel-) Methode wahrscheinlich besser. Es war eine schlechte Designwahl von Seiten Microsofts, sie hätten wirklich einen Schalter für den Titel hinzufügen sollen, anstatt “ist das erste Argument in Anführungszeichen eingeschlossen?