Bagaimana cara menghentikan proses kelelawar pada Windows?


11

Saya memiliki file BAT berjalan di latar belakang pada Windows yang berlangsung sekitar sepuluh menit. Sekarang saya ingin menghentikannya saat sedang berjalan, tetapi saya tidak dapat menemukan namanya di daftar proses di task manager. Jadi bagaimana saya bisa mendekati ini? Terima kasih!

UPDATE1

Tampaknya sulit untuk menghentikan proses BAT yang berjalan di backgroud. Dan saya memutuskan untuk mencoba membunuh setiap proses yang dilakukan oleh file BAT dengan nama, yang mungkin berlebihan. Ini dapat diterima bagi saya karena sebagian besar proses dalam file BAT saya tidak sering digunakan, seperti ping, tracert, netstat dll. Jika Anda memiliki solusi yang lebih baik, silakan beri tahu saya. Terima kasih.

UPDATE2

Pohon proses BAT

teks alternatif


1
Bagaimana Anda membuat file bat dijalankan di latar belakang? Anda mengatakan Anda tidak dapat melakukan ctrl-c. Saya akan mencoba break = on jika itu tidak berhasil, tetapi Anda mengatakan Anda tidak dapat melakukan ctrl-c karena itu "di latar belakang". Mungkin itu sudah berjalan dan selesai, dan Anda hanya harus membunuh apa yang ditimbulkannya.
barlop

2
@ Barlop, itu dapat dikecualikan di backgroud dengan ShellExecute(NULL,"open","some.bat",NULL,NULL,SW_HIDE);di VC ++.
SpawnST

Jawaban:


11

Proses biasanya diluncurkan dalam pohon seperti mode, saya akan menyarankan meluncurkan Microsoft / Sysinternals Process Explorer , Mulai dengan mengklik pada opsi Show Process Tree(1), kemudian menemukan proses Anda dan klik kanan dan pilih Kill Process Tree(2) Ini akan membunuh file asli dan semua yang telah diluncurkan.

teks alternatif


Membunuh Pohon Proses tampaknya agak berat. Mungkin cukup untuk membunuh proses induk (perintah kelelawar).
wag2639

1
@ Wagag3939, setelah membaca pertanyaan, saya pikir dia ingin mengakhiri BAT dan menelurkan proses? Ketika dikatakan bahwa butuh waktu lama untuk memproses, saya mengerti bahwa ketika proses diluncurkan dan kemudian tidak ada yang terjadi sampai mereka menulis tanggapan ... Jika pohon tidak berakhir, hanya akan ada banyak proses yang berjalan yang tidak melakukan apapun.
William Hilsum

Saya sudah mencoba cara ini dan menambahkan gambar dalam jawaban saya. Terima kasih. Dan sekarang saya menemukan perintah yang dapat mematikan proses yang dimulai oleh file BAT dan anak-anaknya taskkill /F /T /IM cmd.exe. Satu-satunya masalah adalah, setiap file BAT akan memulai cmd.exeproses dengan PID yang berbeda Saya perlu mencari tahu mana yang menjadi target saya.
SpawnST

@SpawnST, proses apa yang meluncurkan file BAT? Anda harus membunuh item yang meluncurkannya jika ada banyak salinan.
William Hilsum

@ Wil, ini dimulai oleh proses MFC / Dialog. Dialog hanya menjalankan file BAT dengan shell jendela ketika diinisialisasi. Sekarang saya mencoba untuk memastikan bahwa proses BAT dihentikan sepenuhnya ketika dialog keluar.
SpawnST

5

Anda dapat memodifikasi file batch sehingga menggunakan file kunci untuk melanjutkan operasi, dengan memasukkan pemeriksaan antara perintah untuk keberadaan file. Untuk menghentikan eksekusi file batch, cukup hapus file-kunci.

Ini adalah file kumpulan demo:

echo xx > "c:\temp\lockfile"
pause
if not exist "c:\temp\lockfile" goto  exit
pause
del "c:\temp\lockfile"
:exit

Untuk mematikan proses yang mungkin sedang dijalankan saat ini, Anda dapat membuat file batch 'kill' yang akan berisi perintah taskkill untuk semua tugas yang mungkin diluncurkan dari file batch:

del "c:\temp\lockfile"
taskkill /im mytask1.exe
taskkill /im mytask2.exe

Itu ide yang bagus. Tapi saya pikir itu dapat menyebabkan beberapa masalah pada aplikasi saya ketika sebuah perintah dieksekusi untuk waktu yang lama, tracertmisalnya.
SpawnST

ya, itulah yang saya lakukan sekarang, benar-benar keras sekali :-). Dan mungkin file kunci tidak diperlukan dalam solusi ini.
SpawnST

Ini diperlukan agar file batch tidak menjalankan tugas berikutnya ketika yang sekarang dihentikan. Jika tidak, bisa terjadi bahwa task1 dihentikan dan task2 dimulai setelah taskkillnya selesai, sehingga batch kill hanya akan ketinggalan pada task2.
harrymc

1

BAT biasanya meluncurkan instance CMD.exe. Bergantung pada apa yang dilakukan skrip Anda, skrip ini juga akan memulai proses lain.


Jadi, adakah cara yang bisa menghentikannya untuk tetap memulai proses lain?
SpawnST

1
@SpawnST: Jika jendela CMD terlihat, tidak bisakah Anda cukup mengetik CTRL + C?
paradroid

@ jason404, seperti yang saya sebutkan dalam pertanyaan, itu berjalan di latar belakang.
SpawnST

1

Saya menulis sebuah aplikasi yang mungkin dapat membantu Anda, setidaknya jika BAT berjalan di jendela CMD. Anda dapat melihat aplikasi windows yang sedang berjalan dan mendapatkan PID dari aplikasi, Anda kemudian dapat membunuhnya dengan aplikasi saya, Anda juga dapat melihat semua proses yang telah memunculkan dan membunuh mereka juga. Ini program yang sangat sederhana, tetapi efektif untuk hal semacam ini. Anda juga dapat menggunakannya untuk melacak di mana pada HD Anda file BAT dijalankan, jika Anda belum tahu itu.


Saya melakukan pekerjaan ini dengan VC ++ / MFC, dan saya pikir saya perlu beberapa perintah windows untuk menyelesaikannya. Terima kasih atas tanggapannya.
SpawnST

1

Bagaimana file batch dipanggil?
Jika berasal dari Penjadwal Tugas, maka Anda dapat menghentikannya dari sana juga. Jika berasal dari layanan, maka Anda dapat menghentikan layanan.



0

Jika Anda membukanya di command prompt Anda dapat menekan Ctrl+ C. Tunggu beberapa detik dan itu akan dihentikan.

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.