‘start’명령으로 Windows의 cmd에서 명령 줄 인수로 프로그램을 시작하는 방법은 무엇입니까? 있습니다. start C:\Users\USER>start “c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe” -startvm

startWindows 7 명령 줄 의 명령으로 백그라운드에서 프로그램 (가상 머신)을 시작해야합니다 . 일반적으로 다음과 같이합니다.

start /b cmd yourprogram

그러나 몇 가지 인수를 전달해야 /b하며 디버그 정보를 볼 수있는 플래그가 없는 경우 가 있습니다.

start C:\Users\USER>start "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

이 오류 메시지가 나타납니다.

Windows에서 ‘-startvm’을 찾을 수 없습니다. 이름을 올바르게 입력했는지 확인한 후 다시 시도하십시오.

반면에 현재 명령 줄 창 start에서 시작 하지 않고 가상 머신은 정상적으로 실행되지만 전경에서는 실행합니다.

어떤 솔루션?



답변

start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

다음을 사용하여 매개 변수 목록을 읽는 경우 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.

그것은이 기대한다 title따옴표로 묶여 ( "). 프로그램 경로에 따옴표가 포함되어 있으므로 제목으로 해석됩니다. 명시 적 제목 (이 경우에는 empty "")을 추가하면 작동합니다.


다른 방법은 /d스위치를 사용하여 경로를 지정하는 것입니다. 구체적으로 :

start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"

/d인용 된 경우에도 스위치 다음의 첫 번째 인수를 경로로 사용하고 다음 인수가 인용되지 않은 경우 작동합니다. 명령 / 프로그램으로 인식 된 이후의 모든 항목은 해당 명령 / 프로그램에 매개 변수로 전달됩니다. 명령 / 프로그램에 이름에 공백 VBox Headless.exe이 있으면 따옴표가 필요하고 제목으로 인식되므로이 기능 은 작동하지 않습니다 .


전반적으로 첫 번째 (명백한 제목) 방법이 더 좋습니다. 마이크로 소프트 측에서는 잘못된 디자인을 선택했다. “따옴표로 묶은 첫 번째 인수가 아닌”제목 대신 스위치를 추가해야했다.


답변

실제로 받아 들여진 대답은 여전히 ​​해결책이 아닙니다. 명령이 실행 된 cmd 창을 닫으면 실행중인 가상 머신이있는 vboxheadless 프로세스가 종료됩니다.

아래의 접근 방식을 사용하면 PowerShell 이 독립적 인 프로세스를 실행 하게 됩니다.

cmd에서 다음을 실행하십시오.

cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage list vms

이것은 다음과 같은 것을 반환합니다 :

"Webserver LAP" {8748b594-7e2d-4d8d-8785-999940766754}

이제 UUID를 사용하여 다음을 실행하십시오 (여전히 cmd).

powershell start-process 'C:\program files\oracle\virtualbox\vboxheadless' '-s 8748b594-7e2d-4d8d-8785-999940766754' -WindowStyle Hidden

이 기사 의 저자에게 감사합니다 .


답변