windows - Hvordan hentes pid og dræber den ved hjælp af batchfil?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er nødt til at finde en proces til en bestemt jarfil og dræbe den ved hjælp af samme batchfil.


C:Usersk98>ps -ef|grep java
  10892   5648  0   Mar 08 con  0:02 "C:Program FilesJavajdk1.7.0\_51injava"  com.dassault\_systemes.mkwebappserver.MainClass -app CATMkWebAppServerConsoleapps\_list.html -autobui
  13060   7828  0 09:42:28 con 49:05 java  -Djsse.enableSNIExtension=false -Djava.util.logging.config.file=..configlog.properties -classpath "../extlib/*";..extlibmysql-connector-


her vil jeg finde pid af config \ log.properties fil og dræbe den ved hjælp af batch filen.

Bedste reference


Den mest fleksible måde at opdage en pid ved sin kommandolinje (hvor din krukke skal medtages) er med wmic. For at behandle resultatet wmic og tildele det til en variabel, skal du FOR /F:


@echo off

for /f  "useback tokens=* delims=" \%\%# in (
    `wmic process where "CommandLine like '\%\%my\_jar.jar\%\%' and not CommandLine like '\%\%wmic\%\%' " get  ProcessId /Format:Value`
) do (
    for /f "tokens=* delims=" \%\%a in ("\%\%#") do set "\%\%a"
)

echo \%processId\%

echo taskkill /pid \%processId\% /f


Hvor du skal ændre '\%\%my\_jar.jar\%\%' med dit jarnavn. For at dræbe processen skal du slette echo ordet i den sidste linje. Det ekkoeres for at kontrollere, om det korrekte proces-id håndteres .


For mere info:


wmic [8]


FOR/F [9]


WQL [10]


taskkill [11]

Andre referencer 1


Sådan finder jeg 'og' dræber Adobe Acrobat


::Close acrobat and any opened PDF
taskkill /im acrobat.exe /t /f 
timeout 2

/im for imagename, or program you're targeting
/t terminates the specified process and any child process which were started by it
/f Forcefully terminate the process