Windows 'cmd'de' start 'komutu ile komut satırı argümanlarına sahip bir program nasıl başlatılır?


33

startWindows 7 komut satırında bir komut ile arka planda bir program (sanal makine) başlatmam gerekiyor . Normalde bunu böyle yaparsın:

start /b cmd yourprogram

Ancak bazı argümanları iletmem gerekiyor ve böyle olunca ( /bhata ayıklama bilgilerini görmek için bayraksız):

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

Bu hata mesajını alıyorum:

Windows '-startvm' dosyasını bulamıyor. Adı doğru yazdığınızdan emin olun ve tekrar deneyin.

Öte yandan, mevcut komut satırı penceresinde startbaşlangıçta olmadan yaptığımda sanal makine normal çalışır - ancak ön plandadır.

Herhangi bir çözüm var mı?

Yanıtlar:


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

Parametre listesini şu şekilde okursanız 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.

titleTırnak içine alınmış bir tırnak bekler ( "). Program yolunuz tırnak işaretleri içerdiğinden, başlık olarak yorumlandı. Açık bir başlık eklemek (bu durumda boş "").


Alternatif bir yöntem, /dyolu belirtmek için anahtarı kullanıyor . özellikle:

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

/dAnahtar değiştirildikten sonra ilk argümanı yol olarak alıyor, alıntı olsa bile ve bir sonraki argüman belirtilmemişse, bu işe yarıyor. Komut / program olarak tanınan şeyden sonraki her şey, o komut / programa bir parametre olarak iletilir. Komut / programın adında boşluklar varsa bunun işe yaramayacağına dikkat edin VBox Headless.exe, çünkü bu, tırnak gerektirir ve bir başlık olarak tanınır.


Genel olarak, ilk (açık başlık) yöntemi muhtemelen daha iyidir. Microsoft açısından kötü bir tasarım seçimdi, gerçekten "tırnak içine alınmış ilk argüman mı?" Yerine başlık için bir anahtar eklemeliydiler.


Bunun için çok teşekkürler :) Gördüğüm kadarıyla start /bsanal makineyi arkaplana koymayın. O zaman başka bir şey bulmalıyım.
Patryk

Çıktıyı ( stdout) gizlemek istiyorsanız sadece >nulsonuna ekleyin . >nul 2>nulHem normal hem de error ( stderr) çıkışını bastırmak için sonunda kullanın . Ancak komut istemi penceresinin açık tutulması gerekir.
Bob

1
@Patryk PowerShell kullanmaktan sakıncası yoksa, bu komut, ortaya çıkma (powershell.exe) işlemine bağlı olmayan penceresiz bir işlemi açacaktır. Bu nedenle PowerShell penceresi kapatılabilir ve VBoxHeadless çalışmaya devam eder. PowerShell, Windows 7 ile birlikte gelir.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
Bob

3

Aslında kabul edilen cevap hala bir çözüm değildir. Komutun uygulandığı cmd penceresini kapatmak, içinde çalışan sanal makine ile vboxheadless işlemini öldürür.

Aşağıdaki yaklaşımı kullanmak PowerShell'i bağımsız bir işlem yapacaktır .

Cmd olarak çalıştırın:

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

Bu, şöyle bir şey döndürür:

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

Şimdi UUID'yi alın ve aşağıdakileri çalıştırın (hala cmd cinsinden):

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

Bu yazının yazarı için teşekkürler .


In Kendi cevap benim yorumum ben zaten "headlessly Vbox çalışan" için alternatif bir yöntem sağladık. Cevabımın kendisi "ile argüman geçirme" sorusunu ele alıyor start.
Bob

VAOV! cdSAATLERİMİ KAYDEDİN!
T.Todua,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.