Saya tahu saya telah menjawab pertanyaan serupa ( Menjalankan File Batch di latar belakang saat windows boot ), tetapi kali ini saya perlu meluncurkan batch:
- dari kelompok lain,
- tanpa jendela konsol yang ditampilkan,
- dengan semua argumen yang diteruskan ke kumpulan tak terlihat.
Batch pertama dijalankan di jendela konsol. Namun, saya tidak ingin batch kedua (diluncurkan oleh yang pertama secara asinkron ) juga menampilkan jendela konsol.
Saya telah membuat skrip VBScript yang melakukan hal itu, dan saya menempatkan skrip sebagai jawaban untuk dirujuk orang lain , tetapi jika Anda memiliki ide / solusi lain, silakan berkontribusi.
Catatan: Jendela konsol dari prosesor perintah Windows dinamai jendela DOS yang tidak benar oleh banyak orang.
Terima kasih atas jawabannya. Dari apa yang saya pahami, jika saya perlu memanggil skrip secara asinkron untuk berjalan dalam mode tak terlihat:
- Dari skrip kedua yang sudah ada di jendela konsol,
start /b
sudah cukup. - Dari Windows, tanpa memicu jendela kedua , solusi saya masih valid.
sumber
Jawaban:
Apakah Anda memerlukan file batch kedua untuk berjalan secara asynchronous? Biasanya satu file batch menjalankan file lainnya secara sinkron dengan file
call
perintah, dan yang kedua akan membagikan jendela yang pertama.Anda dapat menggunakan
start /b
second.bat untuk meluncurkan file batch kedua secara sinkron dari jendela pertama yang membagikan jendela pertama Anda. Jika kedua file batch menulis ke konsol secara bersamaan, hasilnya akan tumpang tindih dan mungkin tidak dapat terbaca. Juga, Anda ingin meletakkanexit
perintah di akhir file batch kedua Anda, atau Anda akan berada dalamcmd
shell kedua setelah semuanya selesai.sumber
Berikut adalah solusi yang mungkin:
Dari skrip pertama Anda, panggil skrip kedua Anda dengan baris berikut:
Sebenarnya, Anda memanggil skrip vbs dengan:
%*
)Kemudian, invis.vbs akan memanggil skrip Anda dengan metode Windows Script Host Run () , yang membutuhkan:
Inilah invis.vbs:
sumber
Ubah file batch menjadi file exe. Coba Bat To Exe Converter atau Online Bat To Exe Converter , dan pilih opsi untuk menjalankannya sebagai aplikasi hantu, yaitu tanpa jendela.
sumber
Saya pikir ini adalah solusi termudah dan terpendek untuk menjalankan file batch tanpa membuka jendela DOS, ini bisa sangat mengganggu ketika Anda ingin menjadwalkan serangkaian perintah untuk dijalankan secara berkala, sehingga jendela DOS terus muncul, inilah solusi Anda . Gunakan VBS Script untuk memanggil file batch ...
Salin baris di atas ke editor dan simpan file dengan ekstensi .VBS. Edit nama dan jalur file .BAT yang sesuai.
sumber
Set WshShell = Nothing
, berfungsi dengan baik untuk saya dan Anda dapat memiliki cara yang lebih kecil untuk melakukannya.Berikut adalah kumpulan cara saya untuk mencapainya - dan bahkan lebih - jika memungkinkan, saya juga telah mencoba mengembalikan PID dari proses yang dimulai (semua skrip yang ditautkan dapat diunduh dan disimpan dengan nama apa pun yang menurut Anda nyaman):
1) IEXPRESS Solusi dapat digunakan bahkan pada mesin win 95/98 lama. Iexpress adalah alat yang sangat kuno yang masih dikemas dengan Windows - karena argumen hanya menerima perintah dan argumennya.
Contoh penggunaan:
2) SCHTASKS - Sekali lagi hanya menerima dua argumen - perintah dan argumen. Juga periksa apakah itu dimulai dengan izin yang ditinggikan dan jika mungkin dapatkan PID dari proses dengan WEVTUTIL (tersedia dari Vista dan di atasnya sehingga versi windows yang lebih baru akan menerima PID).
Contoh penggunaan:
3) 'WScript.Shell' - skrip adalah pembungkus penuh dari 'WScript.Shell' dan setiap opsi yang memungkinkan dapat diatur melalui opsi baris perintah. Ini adalah jscript / batch hybrid dan dapat disebut sebagai kelelawar.
Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'):
4) 'Win32_ProcessStartup' - sekali lagi pembungkus penuh dan semua opsi dapat diakses melalui argumen baris perintah. Kali ini WSF / batch hybrid dengan beberapa Jscript dan beberapa potongan kode VBScript - tetapi mengembalikan PID dari proses yang dimulai. tidak tersembunyi beberapa opsi seperti koordinat X / Y dapat digunakan (tidak berlaku untuk setiap eksekusi - tetapi misalnya cmd.exe menerima koordinat).
Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'):
5) Itu. Solusi NET . Sebagian besar opsi opsi ProcessStartInfo digunakan (tetapi pada akhirnya saya terlalu lelah untuk memasukkan semuanya):
Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'):
sumber
Di pertanyaan lain saya menyarankan autoexnt . Itu juga mungkin dalam situasi ini. Cukup setel layanan untuk dijalankan secara manual (bukan otomatis saat startup). Ketika Anda ingin menjalankan batch Anda, ubah file autoexnt.bat untuk memanggil file batch yang Anda inginkan, dan mulai layanan autoexnt.
Batchfile untuk memulai ini, bisa terlihat seperti ini (belum diuji):
Perhatikan bahwa file batch yang dimulai dengan cara ini dijalankan sebagai pengguna sistem, yang berarti Anda tidak memiliki akses ke jaringan bersama secara otomatis. Tapi Anda bisa menggunakan net use untuk menyambung ke server jauh.
Anda harus mengunduh Kit Sumber Daya Windows 2003 untuk mendapatkannya. Resource Kit juga dapat diinstal di versi windows lain, seperti Windows XP.
sumber
Jalankan dengan nama pengguna yang berbeda, menggunakan "runas" atau dengan menjadwalkannya di bawah pengguna lain di Tugas Terjadwal Windows.
sumber
Anda dapat menjalankan file .bat Anda melalui file .vbs.
Salin kode berikut ke file .vbs Anda:
sumber
Anda juga bisa menggunakan
PS: Sayangnya, status jendela yang diminimalkan tergantung pada perintah untuk dijalankan. VG tidak bekerja
sumber