Katakan, jika saya punya
- foo.exe
- bar.exe
- baz.exe
Bagaimana cara menjalankan semuanya dari file batch secara serempak, yaitu tanpa menunggu program sebelumnya berhenti?
batch-file
cmd
RichN
sumber
sumber
help
dengan seksama. :)Menggabungkan beberapa jawaban sebelumnya, Anda bisa mencoba
start /b cmd /c foo.exe
.Sebagai contoh sepele, jika Anda ingin mencetak versi java / groovy / grails / gradle, Anda bisa melakukan ini dalam file batch:
Jika Anda memiliki sesuatu seperti Process Explorer (Sysinternals), Anda akan melihat beberapa proses cmd.exe anak masing-masing dengan proses java (sesuai perintah di atas). Output akan mencetak ke layar dalam urutan apa pun yang mereka selesai.
sumber
echo off
di awal yang, ketika Anda mengeksekusi skrip, akan mencegah semua perintah untuk digaungkan ke konsol. The@
mirip tapi hanya untuk satu perintah saja. Jadi, terkadang Anda akan melihat@echo off
.Anda dapat menggunakan perintah mulai untuk menelurkan proses latar belakang tanpa meluncurkan jendela baru:
start /b foo.exe
Proses baru tidak akan terputus dengan CTRL-C; Anda dapat membunuhnya hanya dengan CTRL-BREAK (atau dengan menutup jendela, atau melalui Task Manager.)
sumber
BREAK
pada keyboard hari ini?Buat file batch dengan baris berikut:
The perintah mulai menjalankan perintah Anda di jendela baru, sehingga semua 3 perintah akan menjalankan asynchronously.
sumber
Gunakan perintah MULAI :
Jika jalur ke program berisi spasi, ingatlah untuk menambahkan tanda kutip. Dalam hal ini Anda juga perlu memberikan judul untuk jendela konsol pembuka
Jika Anda perlu memberikan argumen, tambahkan di akhir (di luar tanda kutip perintah)
Gunakan opsi / b untuk menghindari membuka jendela konsol baru (tetapi dalam hal ini Anda tidak dapat mengganggu aplikasi menggunakan CTRL-C
sumber
Ada opsi ketiga (dan mungkin jauh lebih mudah). Jika Anda ingin memutar beberapa instance dari satu program, menggunakan prosesor perintah Unix-style seperti Xargs atau GNU Parallel dapat menjadikannya proses yang cukup mudah.
Ada klon win32 Xargs yang disebut PPX2 yang yang membuat ini cukup mudah.
Misalnya, jika Anda ingin transcode direktori file video, Anda bisa menjalankan perintah:
Memilih ini secara terpisah,
dir /b *.mpg
mengambil daftar file .mpg di direktori saya saat ini,|
operator mem-pipe daftar ini ke ppx2, yang kemudian membangun serangkaian perintah untuk dieksekusi secara paralel; 4 sekaligus, sebagaimana ditentukan di sini oleh-P 4
operator. Itu-L 1
Operator memberitahu ppx2 hanya mengirim satu baris dari daftar direktori kami untuk ffmpeg pada suatu waktu.Setelah itu, Anda cukup menulis baris perintah (
ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
), dan{}
secara otomatis diganti untuk setiap baris daftar direktori Anda.Ini tidak berlaku secara universal untuk setiap kasus, tetapi jauh lebih mudah daripada menggunakan penyelesaian file batch yang dijelaskan di atas. Tentu saja, jika Anda tidak berurusan dengan daftar file, Anda juga dapat menyalurkan konten file teks atau program lain ke dalam input pxx2.
sumber
Saya tidak bisa mendapatkan apa pun untuk bekerja saya akhirnya hanya menggunakan PowerShell untuk memulai skrip kelelawar .. kadang-kadang bahkan mulai cmd / c tidak bekerja tidak yakin mengapa .. Saya bahkan mencoba hal-hal seperti mulai cmd / c notepad & keluar
sumber