How to extract a specific field from output of tasklist on the windows command line

后端 未结 3 2010
难免孤独
难免孤独 2020-12-14 21:08

I ran the following command on the windows command prompt

C:>tasklist /fi \"Imagename eq BitTorrent.exe\"

The output of which is

相关标签:
3条回答
  • 2020-12-14 21:31

    the easiest way is with using WMIC:

    c:\>wmic process where caption="BitTorrent.exe" get  ProcessId
    

    EDIT: As the WMIC is not part of home editions of windows:

    for /f "tokens=1,2 delims= " %A in ('tasklist /fi ^"Imagename eq cmd.exe^" ^| find ^"cmd^"') do echo %B
    

    Here is used CMD of the caption.You can change it in the find and tasklist parameters. If this used in batch file you'll need %%B and %%A

    0 讨论(0)
  • 2020-12-14 21:46

    Similar to previous answers, but uses specific switches in tasklist to skip header and behave correctly irrespective of spaces in image names:

    for /f "tokens=2 delims=," %F in ('tasklist /nh /fi "imagename eq BitTorrent.exe" /fo csv') do @echo %~F
    

    (as run directly from cmd line, if run from batch replace %F with %%F

    0 讨论(0)
  • 2020-12-14 21:47

    You can use wmic command to not filter the output:

    wmic process where name="BitTorrent.exe" get processid | MORE +1
    

    UPDATE: Another way:

    @Echo OFF
    FOR /F "tokens=2" %%# in ('tasklist /fi "Imagename eq winamp.exe" ^| MORE +3') do (Echo %%#)
    Pause&Exit
    

    PS: Remember you need to set right the tokens if the app filename contain spaces.

    0 讨论(0)
提交回复
热议问题