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 title
w 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 /d
przełą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 /d
przełą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.exe
Ponieważ 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 /b
nie umieszczaj maszyny wirtualnej w tle. Muszę wymyślić coś innego.