start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
Si vous lisez la liste des paramètres avec 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.
Il s'attend à un title
entre guillemets ("
). Comme le chemin de votre programme comprenait des guillemets, il a été interprété comme le titre. L'ajout d'un titre explicite (dans ce cas, vide, ""
) fonctionne.
Une autre méthode consiste à utiliser le commutateur /d
pour spécifier le chemin. Plus précisément :
start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"
Il semble prendre le premier argument après le commutateur /d
comme chemin, même s'il est cité, et si l'argument suivant n'est pas cité, alors cela fonctionne. Tout ce qui suit ce qui est reconnu comme commande/programme est passé comme paramètre à cette commande/programme. Notez que cela ne fonctionnera pas si la commande/le programme comporte des espaces dans le nom, par exemple VBox Headless.exe
, car cela nécessiterait des guillemets et serait reconnu comme un titre.
Dans l'ensemble, la première méthode (titre explicite) est probablement meilleure. C'était un mauvais choix de conception de la part de Microsoft, ils auraient vraiment dû ajouter un interrupteur pour le titre plutôt que “le premier argument est-il entre guillemets ?