Pengguna anonim
Lebih
Bagaimana menjalankan beberapa .BAT file di dalam .BAT file
I'm mencoba untuk mendapatkan saya komit membangun.bat
untuk mengeksekusi lain .BAT sebagai bagian dari proses membangun.
Kandungan komit membangun.bat
:
"msbuild.bat"
"unit-tests.bat"
"deploy.bat"
Ini tampaknya cukup sederhana, tapi komit membangun.bat
hanya mengeksekusi item pertama dalam daftar (msbuild.bat
).
Saya telah menjalankan masing-masing file yang terpisah dengan tidak ada masalah.
650
16
Gunakan:
Bila tidak menggunakan CALL, saat ini berkas batch berhenti dan disebut batch file mulai mengeksekusi. It's perilaku aneh dating kembali ke awal MS-DOS hari.
Semua jawaban benar: menggunakan call. Misalnya:
Sejarah
Dalam kuno DOS versi itu tidak mungkin untuk secara rekursif execute batch file. Kemudian memanggil perintah diperkenalkan yang disebut lain cmd shell untuk menjalankan file batch dan kembali eksekusi kembali ke panggilan cmd shell ketika selesai.
Jelas di versi lain cmd shell diperlukan lagi.
Di hari-hari awal banyak batch file tergantung pada fakta bahwa pemanggilan sebuah file batch tidak akan kembali untuk memanggil file batch. Mengubah perilaku tersebut, tanpa tambahan sintaks akan rusak banyak sistem seperti batch sistem menu (menggunakan batch file untuk menu struktur).
Seperti dalam banyak kasus dengan Microsoft, kompatibilitas karena itu adalah alasan untuk perilaku ini.
Tips
Jika anda batch file yang memiliki spasi di nama mereka, gunakan tanda kutip nama:
Dengan cara: jika anda tidak memiliki semua nama-nama file batch, anda juga bisa menggunakan untuk untuk melakukan hal ini (itu tidak menjamin urutan yang benar dari file batch panggilan; mengikuti urutan file system):
Anda juga dapat bereaksi pada errorlevels setelah panggilan. Gunakan:
untuk memberikan kembali errorlevel. 0 menunjukkan pelaksanaan yang benar. Dalam pemanggilan file batch anda dapat bereaksi menggunakan
Gunakan
jika errorlevel 1
jika anda memiliki lebih tua dari Windows NT4/2000/XP untuk menangkap semua errorlevels 1 dan lebih besar.Untuk mengontrol aliran dari suatu file batch, ada goto :-(
Seperti orang-orang lain menunjukkan: silahkan lihat pada membangun sistem untuk menggantikan file batch.
Jika kita ingin membuka beberapa command prompt maka kita bisa menggunakan
/k
: wajib yang akan mengeksekusi.Meluncurkan banyak command prompt dapat dilakukan sebagai berikut.
Coba:
Anda menelepon beberapa batch dalam upaya untuk menyusun sebuah program. Aku mengambil untuk diberikan bahwa jika terjadi kesalahan:
'||' tes untuk errorlevel lebih tinggi dari 0. Dengan cara ini semua batch yang disebut dalam rangka, tetapi akan berhenti di setiap kesalahan, meninggalkan layar seperti itu adalah untuk anda untuk melihat pesan kesalahan.
Jika kita memiliki dua batch script, aaa.bat dan bbb.bat, dan memanggil seperti di bawah ini
Ketika menjalankan script, ia akan memanggil aaa.kelelawar pertama, menunggu benang dari aaa.bat menghentikan, dan panggilan bbb.bat.
Tapi jika anda don't ingin menunggu untuk aaa.bat untuk mengakhiri panggilan bbb.bat, cobalah untuk menggunakan START perintah:
Ujian:
Untuk memanggil
.bat
file dalam.bat
file, gunakan(Ya, ini konyol, itu akan membuat lebih masuk akal jika anda bisa menyebutnya dengan
foo.bat
, seperti yang anda bisa dari command prompt, tapi cara yang benar adalah dengan menggunakanpanggil
.)Melihat nama file, anda telah dianggap menggunakan build tool seperti NAnt atau Semut (versi Jawa). Anda'll mendapatkan kontrol yang lebih banyak dibandingkan dengan bat file.
Jika itu doesn't bekerja, menggantikan
start
denganpanggilan
atau coba ini:Jika anda ingin membuka banyak batch file sekaligus anda dapat menggunakan perintah panggilan. Namun, panggilan perintah menutup bat file dan pergi ke yang lain. Jika anda ingin membuka banyak sekaligus, anda mungkin ingin mencoba ini:
Dan sebagainya atau ulangi mulai
cmd
"panggilan
..." namun untuk banyak file. Ini bekerja untuk Windows 7, tapi saya tidak yakin tentang sistem lain.Menjalankan beberapa script di satu saya memiliki masalah yang sama. Aku terus setelah itu mati pada yang pertama tidak menyadari bahwa itu adalah keluar pada script pertama.
Saya dihapus semua 11 dari script saya KELUAR jalur dan mencoba lagi dan semua 11 berlari di urutan satu pada waktu yang sama dalam jendela perintah.
Hanya menggunakan
panggilan
perintah! Berikut ini sebuah contoh:Dengan benar mengutip (hal ini dapat sulit kadang-kadang):
1 arg - Judul kosong (dalam kasus ini)
2 arg - /D menentukan awal direktori, dapat diabaikan jika ingin bekerja saat ini dir (seperti "%~dp0")
Arg 3 - perintah untuk memulai, "cmd.exe"
4 argumen - argumen untuk perintah, dengan dua kali lipat kutipan argumen di dalamnya (ini adalah bagaimana anda melarikan diri kutipan dalam kutipan di batch)
Berikut ini adalah Cara Saya =
Membantu =
cmd /?
Berikut memecahkan masalah saya: