start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
Als u de parameterlijst met start /?
leest:
Verwacht een title
tussen aanhalingstekens ("
). Aangezien uw programmapad aanhalingstekens bevatte, werd het geïnterpreteerd als de titel. Het toevoegen van een expliciete titel (in dit geval, leeg, ""
) werkt.
Een alternatieve methode is het gebruik van de /d
-schakelaar om het pad te specificeren. Specifiek:
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.
Het lijkt erop dat het eerste argument na de /d
-schakelaar als pad wordt gebruikt, zelfs als het wordt geciteerd, en als het volgende argument niet wordt geciteerd dan werkt dit. Alles na wat herkend wordt als het commando/programma wordt als parameter aan dat commando/programma doorgegeven. Merk op dat dit niet werkt als het commando/programma spaties in de naam heeft, b.v. VBox Headless.exe
, aangezien dat aanhalingstekens zou vereisen en als titel zou worden herkend.
In het algemeen is de eerste (expliciete titel) methode waarschijnlijk beter. Het was een slechte ontwerpkeuze van Microsoft, ze hadden echt een schakelaar voor de titel moeten toevoegen in plaats van “is het eerste argument tussen aanhalingstekens?”.