Bagaimana cara menutup jendela cmd secara otomatis setelah eksekusi file batch?


90

Saya menjalankan file batch yang memiliki dua baris ini:

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

File batch ini digunakan untuk menjalankan aplikasi Xming dan kemudian aplikasi PuTTY sehingga saya bisa SSH ke lab komputer universitas saya.

Namun, jika saya menjalankan ini dan Xming belum terbuka, setelah saya keluar dari terminal Putty, jendela cmd tetap terbuka. Hanya jika saya telah menjalankan Xming, jendela cmd akan menutup ketika saya menutup terminal Putty. Saya sudah mencoba menambahkan exitke baris terakhir dari file batch, tetapi tidak berhasil.


1
adalah "C:\Program Files (x86)\Xming\Xming.exe"parameter dari putty.exe, atau perintah terpisah?
bpoiss

Jika baris kedua adalah perintah kedua, coba tambahkan mulai sebelum itu juga.
Gray

1
@BernhardPoiss itu adalah perintah terpisah, BUKAN parameter untuk putty.exe. Jika saya menempatkan garis itu terlebih dahulu, itu menggantung dan membuat dempul terbuka. Jika saya memulai di depannya, windows mengatakan "tidak dapat menemukan 'C: \ Program'. Pastikan itu mengetik dengan benar.
yiwei

Jawaban:


136

Ubah file batch ke STARTkedua program, alih-alih STARTsatu dan CALLlainnya

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Jika Anda menjalankannya seperti ini, tidak ada jendela CMD yang akan tetap terbuka setelah memulai program.


29
+1 kecuali jika Anda menggunakan tanda kutip ganda untuk jalur, Anda harus menambahkan parameter pertama ""karena judul menjadi diperlukan. Perintah kedua seharusnya start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowjika tidak maka akan mencoba membuka jendela perintah berjudul C:\Program Files (x86)\Xming\Xming.exemencoba mengeksekusi :0dengan parameter-clipboard -multiwindow
Patrick Meinecke

Juga, start /B "GCFScape" "x64\GCFScape.exe">nulcontoh ini bermanfaat bagi saya
xacinay

4
"Jika perintah adalah perintah cmd internal atau file batch, maka prosesor perintah dijalankan dengan / K beralih ke cmd.exe. Ini berarti jendela akan tetap ada setelah perintah dijalankan." ss64.com/nt/start.html
CAD

3
@CADbloke Masalah yang Anda sebutkan dapat diselesaikan dengan menggunakancmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning

1
@ patrick-meinecke Terima kasih telah menambahkan komentar tentang "", saya merasa frustrasi karena ini menyebabkan masalah bagi saya. Saya membacakan komentar Anda dan momen ah ha pun terjadi.
Michael Eakins

21

Anda biasanya mengakhiri file batch dengan baris yang baru saja bertuliskan exit. Jika Anda ingin memastikan file telah berjalan dan jendela DOS ditutup setelah 2 detik, Anda dapat menambahkan baris:

timeout 2 >nul
exit

Tetapi exitperintah tidak akan berfungsi jika file batch Anda membuka jendela lain, karena selama jendela kedua terbuka, jendela DOS lama juga akan ditampilkan.

SOLUSI: Misalnya ada program gratis kecil yang hebat bernama BgInfo yang akan menampilkan semua info tentang komputer Anda. Dengan asumsi itu ada di direktori yang dipanggil C:\BgInfo, untuk menjalankannya dari file batch dengan /popupsakelar dan untuk menutup jendela DOS saat masih berjalan, gunakan:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

karena /popupsebenarnya memberi saya kesalahan. Setelah menghapus semuanya bekerja
Dmitry Efimenko

5

Jika Anda ingin memisahkan perintah menjadi satu perintah per file, Anda bisa melakukannya

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"

dan di file lainnya, Anda bisa melakukannya

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Perintah cmd / c akan menutup jendela prompt perintah setelah exe dijalankan.


3

Ini berhasil untuk saya. Saya hanya ingin menutup jendela perintah secara otomatis setelah keluar dari permainan. Saya hanya mengklik dua kali pada file .bat di desktop saya. Tidak ada jalan pintas.

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B

1

Saya punya ini, saya menambahkan EXITdan awalnya tidak berhasil, saya kira sesuai membutuhkan called program exitingsaran yang disebutkan dalam tanggapan lain di sini, namun sekarang berfungsi tanpa basa-basi - tidak yakin apa yang menyebabkan ini, tetapi yang perlu diperhatikan adalah bahwa saya memanggil file data .htmldaripada program yang menangani hal itu browser.exe, saya tidak mengedit apa-apa lagi tetapi cukup untuk mengatakan itu jauh lebih rapi hanya menggunakan file bat untuk mengakses halaman akses utama dari dokumen-dokumen web dan hanya memiliki title.bat, contents.bat, index.batdi root folder dengan konten lainnya dalam subfolder.

yaitu: content.bat membaca

cd subfolder
"contents.html"
exit

Ini juga terlihat lebih baik jika saya mengubah ikon file bat hanya untuk item tersebut agar sesuai dengan konteksnya juga, tapi itu masalah lain, menyembunyikan file bat di subfolder dan membuat pintasan ikon kustom ke mereka di folder root dengan gambar menyerukan kustomisasi juga tersembunyi.


1

Anda bisa mencoba yang agak berbahaya: taskkill /IM cmd.exe ..dangerous bcz yang akan mematikan cmd yang terbuka dan setiap cmd yang dibuka sebelumnya.

Atau tambahkan verifikasi untuk mengonfirmasi bahwa Anda memiliki cmd.exe yang benar dan kemudian mematikannya melalui PID, seperti ini:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

Pengganti (pslist &&A)atau (tasklist /FI "PID eq %%A")untuk (taskkill /PID %%A)jika Anda ingin dicek dulu (dan mungkin telah pstools diinstal).


0

Coba saja /sseperti yang tercantum di bawah ini.

Sebagai baris terakhir dalam tipe file batch:

exit /s

Perintah di atas akan menutup jendela CMD Windows.

/s - singkatan silent seperti in (itu akan menunggu input dari keyboard).


1
cmd's keluar perintah tidak memiliki /sswitch (dan itu akan menjadi sia-sia pula)
Stephan

-1

Tambahkan kode ini di akhir kode eksekusi

c: \ windows> keluar


1
apakah Anda membaca kalimat terakhir dari pertanyaan ?:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan

Saya telah menambahkan keluar di akhir skrip saya dan itu benar-benar menyelesaikan masalah saya.
Attila
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.