如何在 Windows cmd 上使用「start」命令使用命令列參數啟動程式?

如何在 Windows cmd 上使用「start」命令使用命令列參數啟動程式?

我需要使用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在開始時虛擬機正常運行 - 但在前台。

有什麼解決辦法嗎?

答案1

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用引號 ( ") 括起來。由於您的程式路徑包含引號,因此它被解釋為標題。添加明確的標題(在本例中為空"")是有效的。


另一種方法是使用/d開關來指定路徑。具體來說:

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

它似乎將/d開關後面的第一個參數作為路徑,即使它被引用,並且如果下一個參數沒有被引用,那麼這將起作用。被識別為命令/程式之後的所有內容都作為參數傳遞給該命令/程式。請注意,如果命令/程式名稱中包含空格(例如 ),則這將不起作用VBox Headless.exe,因為這將需要引號並被識別為標題。


總的來說,第一種(顯式標題)方法可能會更好。對於微軟來說​​,這是一個糟糕的設計選擇,他們真的應該添加一個標題開關,而不是「第一個參數是否用引號引起來?」。

答案2

實際上,接受的答案仍然不是解決方案。關閉執行命令的 cmd 視窗將殺死其中正在執行的虛擬機器的 vboxheadless 進程。

使用下面的方法將使電源外殼運行一個獨立的進程。

在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

感謝作者本文

相關內容