Bagaimana cara memulai program dengan argumen baris perintah pada Windows 'cmd dengan perintah' mulai '?
33
Saya perlu memulai program (mesin virtual) di latar belakang dengan startperintah pada baris perintah 7 Windows. Biasanya Anda akan melakukan ini seperti itu:
start /b cmd yourprogram
Tapi saya perlu menyampaikan beberapa argumen dan ketika saya suka seperti ini (tanpa /bbendera untuk melihat informasi debug):
Windows tidak dapat menemukan '-startvm'. Pastikan Anda mengetik nama dengan benar, lalu coba lagi.
Di sisi lain ketika saya melakukannya di jendela baris perintah saat ini tanpa startdi awal mesin virtual berjalan secara normal - tetapi di latar depan.
Jika Anda membaca daftar parameter dengan 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.
Diharapkan titleterlampir dalam tanda kutip ( "). Karena jalur program Anda menyertakan tanda kutip, ia ditafsirkan sebagai judul. Menambahkan judul eksplisit (dalam hal ini, kosong, "") berfungsi.
Metode alternatif menggunakan /dsakelar untuk menentukan jalur. Secara khusus:
Tampaknya mengambil argumen pertama setelah /dberalih sebagai path, bahkan jika itu dikutip, dan jika argumen berikutnya tidak dikutip maka ini berfungsi. Semuanya setelah apa yang dikenali sebagai perintah / program dilewatkan sebagai parameter untuk perintah / program itu. Catatan ini tidak akan berfungsi jika perintah / program memiliki spasi dalam nama, misalnya VBox Headless.exe, karena itu akan memerlukan tanda kutip dan dikenali sebagai judul.
Secara keseluruhan, metode pertama (judul eksplisit) mungkin lebih baik. Itu adalah pilihan desain yang buruk di pihak Microsoft, mereka seharusnya menambahkan pergantian judul alih-alih "apakah argumen pertama terlampir dalam tanda kutip?".
Terima kasih banyak untuk itu :) Meskipun seperti yang saya tahu start /btidak menempatkan mesin virtual di latar belakang. Saya harus datang dengan sesuatu yang lain.
Patryk
Jika Anda hanya ingin menekan output ( stdout), tambahkan a >nulsampai akhir. Gunakan >nul 2>nuldi akhir untuk menekan output normal dan output error ( stderr). Jendela command prompt harus tetap terbuka.
Bob
1
@Patryk Jika Anda tidak keberatan menggunakan PowerShell, perintah ini akan membuka proses tanpa jendela yang tidak terhubung ke proses pemijahan (powershell.exe). Oleh karena itu jendela PowerShell dapat ditutup dan VBoxHeadless akan terus berjalan. PowerShell hadir dengan Windows 7.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
Bob
3
Sebenarnya jawaban yang diterima masih bukan solusi. Menutup jendela cmd tempat perintah dieksekusi akan mematikan proses vboxheadless dengan mesin virtual yang berjalan di dalamnya.
Menggunakan pendekatan di bawah ini akan membuat PowerShell menjalankan proses independen.
Dalam cmd, jalankan:
cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage list vms
Dalam komentar saya pada jawaban saya sendiri, saya sudah menyediakan metode alternatif untuk "menjalankan VBox tanpa kepala". Jawaban saya sendiri membahas pertanyaan "meneruskan argumen dengan start".
start /b
tidak menempatkan mesin virtual di latar belakang. Saya harus datang dengan sesuatu yang lain.stdout
), tambahkan a>nul
sampai akhir. Gunakan>nul 2>nul
di akhir untuk menekan output normal dan output error (stderr
). Jendela command prompt harus tetap terbuka.Start-Process -FilePath 'C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' -ArgumentList '-startvm "debian604 64"' -WindowStyle Hidden
Sebenarnya jawaban yang diterima masih bukan solusi. Menutup jendela cmd tempat perintah dieksekusi akan mematikan proses vboxheadless dengan mesin virtual yang berjalan di dalamnya.
Menggunakan pendekatan di bawah ini akan membuat PowerShell menjalankan proses independen.
Dalam cmd, jalankan:
Ini akan mengembalikan sesuatu seperti:
Sekarang ambil UUID dan jalankan yang berikut (masih dalam cmd):
Terima kasih kepada penulis artikel ini .
sumber
start
".cd
SIMPAN JAM SAYA!