Saya memiliki skrip "setup" yang saya jalankan di pagi hari yang menjalankan semua program yang saya butuhkan. Sekarang beberapa dari mereka membutuhkan pengaturan lingkungan tambahan, jadi saya perlu membungkusnya dalam skrip BAT kecil.
Bagaimana cara menjalankan skrip seperti itu di Windows XP di latar belakang?
CALL env-script.bat
menjalankannya secara serempak, yaitu skrip pengaturan dapat dilanjutkan hanya setelah perintah dalam skrip env diakhiri.
START/B env-script.bat
menjalankan contoh lain dari CMD.exe di command prompt yang sama, membiarkannya dalam keadaan yang sangat berantakan (saya melihat output dari CMD.exe bersarang, keyboard mati untuk sementara, skrip tidak dijalankan).
START/B CMD env-script.bat
menghasilkan hasil yang sama. Tak satu pun dari bendera di CMD tampaknya cocok dengan tagihan saya.
sumber
Berusia dua tahun, tapi untuk kelengkapan ...
Standar, pendekatan sebaris: (yaitu perilaku yang akan Anda dapatkan saat menggunakan
&
di Linux)Catatan: 1.
CALL
dipasangkan dengan file .bat karena itu biasanya pergi .. (yaitu Ini hanya ekstensi keCMD /C CALL "foo.bat"
formulir untuk membuatnya asinkron. Biasanya, diperlukan untuk mendapatkan kode keluar dengan benar, tapi itu bukan masalah sini.); 2. Tanda kutip ganda di sekitar file .bat hanya diperlukan jika nama berisi spasi. (Nama bisa menjadi jalur dalam hal ini ada kemungkinan lebih besar dari itu.).Jika Anda tidak menginginkan hasilnya:
Jika Anda ingin kelelawar dijalankan pada konsol independen: (yaitu jendela lain)
Jika Anda ingin jendela lain tetap ada setelahnya:
Catatan: Ini sebenarnya bentuk yang buruk kecuali Anda memiliki pengguna yang secara khusus ingin menggunakan jendela yang terbuka sebagai konsol normal. Jika Anda hanya ingin jendela tetap di sekitar untuk melihat hasilnya, lebih baik meletakkan a
PAUSE
di akhir file bat. Atau bahkan belum, tambahkan^& PAUSE
setelah baris perintah:sumber
&
adalah operator "dan kemudian" (terminologi?). (misalnyacmd1 & cmd2
cara melakukannya "cmd1" dan kemudian "CMD2". Berbeda dengan&&
operator, pelaksanaan "CMD2" tidak tergantung pada berhasil keluar dari "cmd1".) The^
lolos&
sehingga masuk ke argumen CMD ini bukannya dikonsumsi dan dijalankan oleh konsol yang sama yang menjalankan START.start
dancmd
tidak memberikan fungsionalitas penuh yang saya cari. Jawaban Anda berhasil.START /B "" CMD /C "foo.bat" [args [...]] ^>nul 2^>^&1
START /B "" CMD /C PING 127.0.0.1 >NUL
tampaknya berhasil terlepas dan tidak ada hasil. (Mungkin karenaCMD
mewarisiSTART
pegangan I / O.) Saya rasa perbedaannya adalah jika Anda ingin menjagaSTART
(kesalahan) keluaran tetap utuh, yang mungkin merupakan ide yang bagus.CALL
hanya ada karena saya merasa ini adalah praktik yang baik untuk dipertahankan. (yaitu Tidak menggunakanCALL
untuk panggilan bat sinkron akan menghasilkan kode keluar yang tidak dapat diprediksi, jadi saya secara konsisten memasangkan panggilan batCALL
bahkan ketika itu tidak benar-benar berlaku, seperti dalam kasus ini.)Karena START adalah satu-satunya cara untuk mengeksekusi sesuatu di latar belakang dari skrip CMD, saya sarankan Anda tetap menggunakannya. Alih-alih pengubah / B, coba / MIN sehingga jendela yang baru dibuat tidak akan mengganggu Anda. Selain itu, Anda dapat menetapkan prioritas ke sesuatu yang lebih rendah dengan / LOW atau / BELOWNORMAL, yang akan meningkatkan daya tanggap sistem Anda.
sumber
Selain istilah latar depan / latar belakang. Cara lain untuk menyembunyikan jendela yang sedang berjalan adalah melalui vbscript, jika masih tersedia di sistem Anda.
beri nama sebagai sth.vbs dan beri nama dari bat, masukkan tugas sheduled, dll. Secara pribadi saya akan menonaktifkan vbs tanpa terburu-buru di sistem Windows yang saya kelola :)
sumber
Buat aplikasi C # Windows baru dan panggil metode ini dari utama:
sumber
Ini berfungsi pada instalasi Windows XP Home saya, dengan cara Unix:
sumber
Sebenarnya cukup mudah dengan opsi ini di bagian akhir:
sumber
start
tidak memiliki-WindowStyle
opsi.C:` instead of
C: \ Windows`) menunjukkan bahwa dia menemukan alat di suatu tempat di internet dan menyalinnya ke hard drive-nya.