Qualche modo per scrivere un file .bat di Windows per uccidere i processi? [chiuso]


114

Ogni volta che accendo la mia macchina di sviluppo di proprietà dell'azienda, devo uccidere più di 10 processi utilizzando Task Manager o qualsiasi altra app di gestione dei processi solo per ottenere prestazioni decenti dal mio IDE. Sì, questi sono processi da programmi che la mia azienda installa sulla mia macchina per sicurezza e conformità. Quello che vorrei fare è avere un file .bat o uno script di qualche tipo con cui posso terminare i processi in questione.

Qualcuno sa come si fa questo?


Questo dovrebbe essere utile anche quando in un ambiente di automazione e un sottoprocesso in fuga deve essere terminato se non riesce a terminare o rispondere in un discreto lasso di tempo.
Danny Staple

Ho postato questo link alla domanda a tutti i miei colleghi diretti perché siamo una ventina di sviluppatori S / W in un'azienda con circa 2000 ingegneri (che fanno CAD). Stiamo costantemente lottando con il dipartimento di amministrazione IT perché (a causa della politica di sicurezza) non siamo quasi in grado di svolgere il nostro lavoro ... (Non aiuta tecnicamente ma è bello sentire che altri sviluppatori S / W sembrano avere problemi simili .)
Scheff

Risposte:


171

Puoi farlo con " taskkill ". Con il parametro / IM è possibile specificare i nomi delle immagini.

Esempio:

taskkill /im somecorporateprocess.exe

Puoi anche farlo per ' forzare ' l'uccisione:

Esempio:

taskkill /f /im somecorporateprocess.exe

Basta aggiungere una riga per ogni processo che si desidera uccidere, salvarlo come file .bat e aggiungerlo nella directory di avvio. Problema risolto!

Se questo è un sistema legacy, PsKill farà lo stesso.


34
LOL - "somecorporateprocess.exe" riassume praticamente la disconnessione dell'IT aziendale dai team di sviluppo.
maplemale

8
Ho avuto successo usando taskkill /F /IM <processname.exe> /Tper forzare la chiusura di tutti i processi in base al loro nome.
Benj

non funziona su win10 per il processo di uccisione degli sfondi. tutto il processo in background in Win 10 viene nominato RuntimeBroker.exee quando si tenta di uccidere non è successo nulla.
Mostafa

106
taskkill /f /im "devenv.exe"

questo ucciderà forzatamente il pid con il nome exe "devenv.exe"

equivalente a -9 sul comando nix'y kill


3
Non ha funzionato fino a quando non ho aggiunto il flag / f al comando. Grazie!
Denis M. Kitchen

4
Questo ucciderà TUTTE le voci con il nome fornito. Particolarmente utile quando un programma si ritorce contro e apre notepad.exe 1000 volte in background:] * ahem *
Richard de Wit

8

Poiché TASKKILL potrebbe non essere disponibile su alcune edizioni Home / base di Windows, ecco alcune alternative:

TSKILL processName

o

TSKILL PID

Tieni presente che processNamenon dovrebbe avere l'estensione.exe suffisso ed è limitato a 18 caratteri.

Un'altra opzione è WMIC:

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic offre ancora più flessibilità rispetto a taskkill con i suoi matcher simili a SQL. Con wmic Path win32_process getpuoi vedere i campi disponibili puoi filtrare (e %può essere usato come carattere jolly).


5

Suppongo che come sviluppatore tu abbia un certo grado di controllo amministrativo sulla tua macchina. In tal caso, dalla riga di comando, esegui msconfig.exe. È possibile rimuovere molti processi anche dall'avvio, eliminando così la necessità di ucciderli con le soluzioni sopra menzionate.


5

Ottieni Autoruns da Mark Russinovich, il ragazzo di Sysinternals che ha scoperto il Sony Rootkit ... Il miglior software che abbia mai usato per ripulire cose che si avviano automaticamente.


4

Scarica PSKill . Scrivi un file batch che lo chiami per ogni processo che vuoi morto, passando il nome del processo per ciascuno.



0

Si prega di trovare la logica di seguito in cui funziona sulla condizione.

Se chiamiamo semplicemente taskkill /im applicationname.exe, verrà ucciso solo se questo processo è in esecuzione. Se questo processo non è in esecuzione, genererà un errore.

In modo da controllare prima che takskillvenga chiamato, è possibile eseguire un controllo per assicurarsi che execute taskkillvenga eseguito solo se il processo è in esecuzione, in modo che non generi errori.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"

1
è più facile reindirizzare il messaggio di errore taskkillanul
Stephan

0

Qui ho scritto un comando di esempio che puoi incollare nel cmdprompt della riga di comando ed è scritto per chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

Il for prende solo tutti PIDi messaggi elencati nel tasklistcomando seguente e viene eseguito TASKKILL /PIDsu ogniPID

tasklist /FO Table /M "chrome*" /NH

Se usi for in un file batch, usa semplicemente %% P invece di% P

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.