start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
Jeśli przeczytasz listę parametrów za pomocą 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.
Oczekiwany jest titlew cudzysłowie ( "). Ponieważ ścieżka programu zawierała cudzysłowy, została zinterpretowana jako tytuł. Dodanie wyraźnego tytułu (w tym przypadku pustego "") działa.
Alternatywną metodą jest użycie /dprzełącznika do określenia ścieżki. Konkretnie:
start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"
Wydaje się, że przyjmuje pierwszy argument za /dprzełącznikiem jako ścieżkę, nawet jeśli jest cytowany, a jeśli następny argument nie jest cytowany, to działa. Wszystko po tym, co jest rozpoznawane jako polecenie / program, jest przekazywane jako parametr do tego polecenia / programu. Uwaga: to nie zadziała, jeśli polecenie / program ma spacje w nazwie, np. VBox Headless.exePonieważ wymagałoby to cudzysłowów i byłoby rozpoznawane jako tytuł.
Ogólnie rzecz biorąc, pierwsza metoda (wyraźny tytuł) jest prawdopodobnie lepsza. To był zły wybór ze strony Microsoftu, oni naprawdę powinni byli dodać przełącznik tytułu zamiast „czy pierwszy argument jest zawarty w cudzysłowie?”.
start /bnie umieszczaj maszyny wirtualnej w tle. Muszę wymyślić coś innego.