windows - Send PID'er fra opgaveliste og dræb processer med opgaveliste

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at få Windows-processer, der matcher nogle bestemte kriterier, f.eks. de er som '123456.exe' og forsøger at dræbe dem med opgavelisten. Jeg forsøger at gøre det sådan:


FOR /F "usebackq tokens=2 skip=2" \%i IN (`tasklist |findstr /r "[0-9].exe") DO taskkill /PID \%i


hvilket er ikke rigtigt, og jeg ved ikke hvorfor .... Kan nogen give mig et tip?
Thanx på forhånd!

Bedste reference


FOR /F "usebackq tokens=2" \%i IN (`tasklist ^| findstr /r /b "[0-9][0-9]*[.]exe"`) DO taskkill /pid \%i


Flere ændringer:



  • Kommandoen til processen har brug for tilbagekalder (``) på begge sider af kommandoen.

  • Rør ('|') inde i command\_to\_processen skal undslippes med en caret ('^').

  • Din findstr kommando ville matche alle processer, der har et ciffer før '.exe'. For eksempel ville 'myapp4.exe' også være blevet dræbt. Den version, jeg giver, matcher procesnavne, der udelukkende indeholder tal.

  • Alternativet 'Skip=2' ville springe over de første to linjer output fra findstr, ikke opgaveliste. Da det regulære udtryk ikke vandt noget i de to første linjer, der er udsendt fra opgavelisten, er du sikker på at fjerne skipet.



Hvis du placerer denne kommando i et batch script, skal du huske at bruge '\%\% i' i stedet for '\% i' for dine parametre, eller du får en fejlmeddelelse som i was unexpected at this time.



  • FOR/F dokumentation

  • Findstr dokumentation


Andre referencer 1


Hvis processens navnforskel ikke er meget kompleks, f.eks. hvis navnet altid er det samme
Du kan bruge/FI-optionen til taskkill direkte [5] [6]


taskkill /FI "IMAGENAME eq your\_image\_name\_here.exe"


==> taskkill dokumentation [7]