O Windows não consegue encontrar '-startvm'. Digite o nome corretamente e tente novamente.
Por outro lado, quando faço isso na janela de linha de comando atual, sem starto início, a máquina virtual é executada normalmente - mas em primeiro plano.
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.
Espera um titleentre aspas ( "). Como o caminho do seu programa incluía aspas, ele foi interpretado como o título. Adicionar um título explícito (nesse caso, vazio "") funciona.
Um método alternativo é usar a /dopção para especificar o caminho. Especificamente:
Parece /dque o caminho é o primeiro argumento após a opção, mesmo que esteja entre aspas, e se o próximo argumento não for entre aspas, isso funcionará. Tudo depois do que é reconhecido como comando / programa é passado como parâmetro para esse comando / programa. Observe que isso não funcionará se o comando / programa tiver espaços no nome, por exemplo VBox Headless.exe, pois isso exigiria aspas e seria reconhecido como um título.
No geral, o primeiro método (título explícito) é provavelmente melhor. Foi uma má escolha de design por parte da Microsoft; eles realmente deveriam ter adicionado uma opção de título em vez de "o primeiro argumento é colocado entre aspas?".
Muito obrigado por isso :) Embora, como eu vejo start /b, não coloque a máquina virtual em segundo plano. Eu tenho que inventar outra coisa então.
Patryk
Se você apenas deseja suprimir output ( stdout), adicione >nula no final. Use >nul 2>nulno final para suprimir a saída normal e a saída de erro ( stderr). A janela do prompt de comando deve ser mantida aberta, no entanto.
22412 Bob
11
@ Patryk Se você não se importa em usar o PowerShell, esse comando abrirá um processo sem janelas que não está conectado ao processo de desova (powershell.exe). Portanto, a janela do PowerShell pode ser fechada e o VBoxHeadless continuará em execução. PowerShell vem com o Windows 7.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
Bob
3
Na verdade, a resposta aceita ainda não é uma solução. Fechar a janela do cmd em que o comando foi executado matará o processo vboxheadless com a máquina virtual em execução.
O uso da abordagem abaixo fará com que o PowerShell execute um processo independente.
No cmd, execute:
cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage list vms
No meu comentário sobre minha própria resposta, eu já forneci um método alternativo para "executar o VBox sem cabeça". Minha resposta em si aborda a questão de "passar argumentos com start".
start /b
, não coloque a máquina virtual em segundo plano. Eu tenho que inventar outra coisa então.stdout
), adicione>nul
a no final. Use>nul 2>nul
no final para suprimir a saída normal e a saída de erro (stderr
). A janela do prompt de comando deve ser mantida aberta, no entanto.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
Na verdade, a resposta aceita ainda não é uma solução. Fechar a janela do cmd em que o comando foi executado matará o processo vboxheadless com a máquina virtual em execução.
O uso da abordagem abaixo fará com que o PowerShell execute um processo independente.
No cmd, execute:
Isso retornará algo como:
Agora pegue o UUID e execute o seguinte (ainda em cmd):
Obrigado ao autor deste artigo .
fonte
start
".cd
SALVAR MINHAS HORAS!