Saya memiliki file batch yang mengubah beberapa file registri, dan kemudian me-restart explorer.exe sehingga mereka berlaku. Saya menggunakan perintah
taskkill /f /im explorer.exe
explorer.exe
Ini tentu saja membunuh semua proses explorer.exe, termasuk windows explorer yang saya buka. (Jelas, saya menggunakan opsi untuk Launch folder windows in a separate process
.)
Apakah ada cara saya dapat menentukan contoh explorer.exe mana yang utama, dan bunuh saja?
windows
windows-explorer
process
batch-file
Hod - Tentara Monica
sumber
sumber
explorer.exe
juga, tetapi untuk alasan yang berlawanan. Saya merasa menjengkelkan bahwaexplorer.exe
proses yang muncul tidak selalu keluar ketika semua jendela terkait ditutup. Saya menggunakan Task Manager untuk membunuh mereka, dan cenderung mengandalkan fakta bahwa instance yang muncul biasanya diatur ke prioritas tinggi (untuk beberapa alasan). Ini berfungsi dengan baik, tetapi jika saya telah mengaturnya menjadi normal (untuk alasan yang jelas), maka saya berisiko mematikan proses utama.taskkill /f /im explorer.exe /fi "windowtitle ne N/A"
. Untuk beberapa alasan, salin / tempel itu ke dalam cmd prompt tidak berfungsi; Anda harus mengetiknya dengan tangan. Tidak mencoba file batch.Jawaban:
Pendekatan berbasis judul jendela
@ techie007 menyarankan untuk membunuh
explorer.exe
judul dengan jendelaN/A
.Perintah
Bagaimana itu bekerja
tasklist /nh /v /fi "imagename eq explorer.exe"
secara lisan daftar semua proses dengan nama gambarexplorer.exe
.for /f "tokens=2,10" %%p in ('COMMAND1') do COMMAND2
mengeksekusi
COMMAND1
. Untuk setiap baris output, ia menetapkan variabel%%p
dan%%q
ke "token" kedua dan kesepuluh (dibatasi oleh ruang) dan dijalankanCOMMAND2
.Dalam kasus
taskkill /v
,%%p
sekarang memegang PID dan%%q
(awal) judul jendela.if "%%q"=="N/A" taskkill /f /pid %%p
memeriksa apakah judul jendelaN/A
.Jika demikian, itu mengakhiri proses dengan
taskkill
.Pendekatan berbasis penggunaan memori
@Syntech menunjukkan bahwa ini tidak dapat diandalkan untuk Windows Explorer, tetapi dalam program, proses utama selalu menggunakan penggunaan memori tertinggi.
Perintah
Bagaimana itu bekerja
tasklist /nh /fi "imagename eq explorer.exe"
daftar semua proses dengan nama gambarexplorer.exe
.sort /+65
mengurutkan output sebelumnya dimulai dengan karakter ke-65 (di mana penggunaan mem dimulai).for /f "tokens=2" %%p in ('COMMAND') do @set explorerpid=%%p
setexplorerpid
ketokens=2
input kedua ( ) - dibatasi oleh spasi - dari setiap baris outputCOMMAND
, yang merupakan PID yang sesuai.Karena
tasklist
ouput telah diurutkan,explorerpid
tahan PID yang diklaim, dantaskkill
akhiri prosesnya.sumber
Mungkin Anda bisa memberi tahu Explorer untuk memperlihatkan jalur di bilah judul, lalu gunakan
WINDOWTITLE
filter untuk membunuhnya berdasarkan itu?Jalur tidak akan ditampilkan di bilah judul Explorer dengan tema 'non-klasik', tetapi ada (sekarang) di sana; itu tidak terlihat.
taskkill /F /FI "WINDOWTITLE eq C:\PathToThing\RunningInExplorer\ToRestart*"
Anda mungkin perlu beralih ke tema klasik sementara untuk menentukan apa jalur / judul untuk instance Explorer yang ingin Anda restart.
Bukan 100% anti-kesalahan, tetapi semua jendela Explorer yang tidak memiliki jalur (sebagian) dalam judul setidaknya akan aman. :)
edit:
Karena Anda ingin mengambil yang dengan judul "N / A", Anda mungkin harus menggunakan file batch sehingga Anda dapat tokenize hasil TASKLIST dan menggunakan hasil token tersebut untuk menggunakan TASKKIL untuk membunuh oleh PID.
Saya menemukan jawaban untuk StackOverflow.com yang membahas ini:
Dari pertanyaan, Tugaskan proses yang tidak berjudul? apakah jawaban ini termasuk contoh file batch ini:
Anda ingin mengubah perintah 'TASKLIST / V' menjadi lebih spesifik untuk Explorer.exe dan semacamnya, tetapi harus memberi Anda titik awal yang baik.
sumber
tasklist /fi "imagename eq explorer.exe" /v /fo list
memberitahu saya bahwa windowtitle-nya adalah "N / A". Sayangnya, `" windowtitle eq N / A "tidak berfungsi. Ada ide?Matikan proses dengan PID (ID Proses) terendah. Itu akan dimulai lebih dulu, karena proses diberi nomor secara berurutan.
sumber
tasklist | find /f "explorer"
dan bertanya lalu bertanya (dengan input pengguna) berapa PID terendah untuk dibunuh.sed
,awk
, dll), yang cukup mudah dilakukan secara otomatis. Jika tidak, input pengguna mungkin merupakan pilihan terbaik.