Saya memiliki tugas yang dijadwalkan yang memulai skrip batch yang berjalan robocopy
setiap jam. Setiap kali menjalankan jendela muncul di desktop dengan output robocopy, yang saya tidak ingin melihat.
Saya berhasil membuat jendela tampak diminimalkan dengan membuat pekerjaan yang dijadwalkan berjalan
cmd /c start /min mybat.bat
tapi itu memberi saya jendela perintah baru setiap jam. Saya terkejut dengan ini, diberikan cmd /c
"Melakukan perintah yang ditentukan oleh string dan kemudian berakhir" - Saya pasti telah salah mengerti dokumen.
Apakah ada cara untuk menjalankan skrip batch tanpa muncul jendela cmd?
Jawaban:
Anda bisa menjalankannya diam-diam menggunakan file Windows Script sebagai gantinya. Metode Jalankan memungkinkan Anda menjalankan skrip dalam mode tidak terlihat. Buat
.vbs
file seperti inidan jadwalkan. Argumen kedua dalam contoh ini menetapkan gaya jendela. 0 berarti "sembunyikan jendela."
Sintaks lengkap dari metode Run :
Argumen:
sumber
Apakah Anda menjalankan ini sebagai tugas yang dijadwalkan? Jika demikian atur agar dijalankan sebagai akun pengguna yang berbeda maka itu tidak akan terlihat oleh pengguna yang masuk. Jika skrip tidak memerlukan akses jaringan ke item yang memerlukan auth windows (seperti berbagi file atau printer), Anda dapat menjalankannya sebagai "nt authority \ system" dan biarkan kata sandi kosong. Pada Windows 7, cukup atur pengguna ke SYSTEM, dan tekan OK.
(Anda mungkin harus menggunakan pengguna nyata jika Anda menggunakan robocopy ...)
JR
sumber
Cukup konfigurasikan Tugas Terjadwal sebagai "Jalankan apakah pengguna masuk atau tidak".
sumber
Anda juga dapat mencoba CHP (Buat proses tersembunyi) , melakukan persis seperti yang Anda pikirkan ...
Berjalan tanpa jendela perintah. Sempurna! Dibuat oleh orang yang sama dengan CMDOW, tetapi ini lebih tepat.
sumber
CMDOW adalah alat awsome yang memungkinkan Anda melakukan banyak, banyak hal untuk windows dari baris perintah.
Salah satu hal paling sederhana yang harus dilakukan adalah menyembunyikan jendela saat ini (biasanya sebagai baris pertama dalam file bat) dengan:
atau memulai proses tersembunyi baru dengan
sumber
Coba gunakan skrip dengan
sumber
start
bukan program, itu adalah perintah. Anda perlu menentukancmd
sebagai program untuk dijalankan dan/c start /b <file>
sebagai argumen. Namun, ini masih tidak akan berhasil karena masih akan membuat jendela konsol untukcmd
dan mem-flash jendela hitam di layar.Anda dapat membuat pintasan ke file kumpulan, mengatur pintasan untuk mulai diminimalkan (di properti pintasan, tab 'Pintasan'), dan kemudian mengatur pekerjaan untuk memulai pintasan.
Penting : Anda harus menentukan jalur ke pintasan secara manual dengan mengetiknya di bidang Run text, lengkap dengan ekstensi '.lnk'; jika Anda hanya mencoba menjelajahinya, itu akan sangat membantu mengarahkan dirinya sendiri ke jalan pintas apa pun yang ditunjuk.
sumber
Saya menyadari pertanyaan ini telah dijawab dengan resolusi yang sangat baik yang asli untuk Windows dan karenanya harus yang paling kompatibel, dan saya setuju sepenuhnya.
Saya juga ingin mengatakan bahwa saya tidak setuju dengan komentar @ splattne (tetapi bukan jawaban aktualnya) - bahwa resolusi di utas referensi lainnya layak mendapatkan pujian. Jawaban itu melibatkan menjalankan skrip sebagai pengguna yang berbeda (SYSTEM), yang hampir setara dengan memberikan akses root skrip. Ini juga akan gagal untuk pekerjaan seperti
ROBOCOPY
(sebagaimana dirujuk oleh John Rennie), yang memerlukan akses jaringan.Saya belum pernah mencoba
CMDOW
sebelumnya, tetapi saya ingin menawarkan resolusi lain yang serupa, yang [walaupun tidak diinstal pada Windows] masih sangat portabel untuk sebagian besar versi, dan tersedia dalam versi 32 dan 64-bit, dan itu adalah NirCmd .NirCmd adalah alat yang sangat kuat yang memiliki banyak sekali opsi, yang paling berguna, saya secara pribadi menemukan kemampuannya untuk meluncurkan jendela perintah tersembunyi dengan hanya menjalankan yang berikut:
Dari
exec
bagian Referensi Perintah The NirCmd :Menjalankan aplikasi, dan secara opsional tentukan satu atau lebih parameter baris perintah untuk aplikasi yang dieksekusi. Parameter [show / hide / min / max] menentukan apakah aplikasi yang berjalan akan terlihat atau tidak. Jika 'sembunyikan' ditentukan, aplikasi yang sedang berjalan tidak akan terlihat oleh pengguna. Jika 'maks' ditentukan, jendela aplikasi yang sedang berjalan akan dimaksimalkan. Jika 'min' ditentukan, jendela aplikasi yang berjalan akan diminimalkan.
EDIT: Saya mencoba menjalankan
ROBOCOPY
pekerjaan dan mencoba metode dalam jawaban ini, dan itu tidak berhasil, bahkan setelah mengedit hak akses jaringan. Saya mencoba mengklik dua kali skrip dan tidak bisa berfungsi, tetapi hanya bisa menjalankannya di bawah command prompt yang ditinggikan. Saya memang membuat jalan pintas ke file batch dan menjalankannya sebagai Administrator dan bisa menjalankannya dengan mengklik dua kali, tetapi metode yang akhirnya saya jalankan adalah menjalankannya disembunyikan sebagai SISTEM (saya tahu, saya tahu) - tetapi itu bekerja dengan baikROBOCOPY
, untuk apa nilainya, selama file batch memiliki izin yang benar.EDIT 2: Untuk beberapa alasan, itu tidak akan berfungsi sebagai SISTEM (mungkin hal akses jaringan yang dirujuk sebelumnya) - Saya hanya memperhatikan ini setelah benar-benar berjalan
ROBOCOPY
tanpa flag / L, yang pada dasarnya hanya simulasi dan [tampaknya] tidak sebenarnya terhubung ke sistem jarak jauh, tetapi ketika saya menjalankan file batch dengan hak istimewa tertinggi dan memeriksa kotak tersembunyi, dan saya masih bisa menjalankannya sebagai pengguna yang login di latar belakang tanpa jendela perintah yang menunjukkan, untuk apa pun ini layak untuk siapa pun .sumber
Solusi lain yang saya gunakan adalah Hidden Start
sumber
Coba masukkan perintah keluar di akhir file batch Anda. Ini harus menutup jendela perintah ketika skrip selesai.
sumber
Untuk menyembunyikan output (meskipun bukan jendela), tambahkan ini ke awal file batch Anda:
sumber