2012-11-22 8 views
11

Pobiegłem następujące polecenie na okna wiersza poleceniaJak wyodrębnić konkretne pole z wyjściem tasklist w wierszu polecenia systemu Windows

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

którego wyjście jest

Image Name   PID  Session Name  Session # Mem Usage 
================== ======== ================= =========== ========= 
BitTorrent.exe  6164  Console     3  24,144K 

muszę wyodrębnić tylko jedno pole, PID, tj. numer 6164 z powyższego wyniku.

Jak to osiągnąć? Bardziej ogólnie, w jaki sposób wyodrębnić podzbiór (1/więcej) z pól z danych wyjściowych polecenia w wierszu poleceń systemu Windows?

Odpowiedz

7

najłatwiej jest z użyciem WMIC:

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

EDIT: Jako WMIC nie jest częścią domu wersje okien:

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

Tutaj służy CMD z caption.Możesz to zmienić w parametrach find i tasklist. Jeśli używany w pliku wsadowym musisz %%B i %%A

+2

nie mogę niczego instalować na komputerze i trzeba użyć standardowego okna zainstalować –

+0

wmic jest standardową polecenie windows.Except edycjach domu ... dodam inne approches w moją odpowiedź i tak – npocmaka

+0

PS:.. Pamiętaj musisz ustawić righ t tokeny, jeśli nazwa pliku aplikacji zawiera spacje. – ElektroStudios

3

Można użyć polecenia WMIC nie filtrować dane wyjściowe:

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

UPDATE: inny sposób:

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

PS: Pamiętaj, że musisz ustawić prawa tokenów, jeśli nazwa pliku aplikacji zawiera spacje.

13

podobne do poprzednich odpowiedzi, ale używa konkretnych przełączników tasklist pominąć nagłówek i zachowywać się poprawnie niezależnie od spacji w nazwach obrazu:

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

(jak uruchomić bezpośrednio z cmd linii, jeśli jest prowadzony od partii zastąpić %F z %%F

+0

Wszystkie 3 odpowiedzi działają dla mnie, ale ja ich nie rozumiem :( Czy ktoś może wyjaśnić fragment kodu lub wskazać mi dokumentację dla "for/f", "tokenów", "delimi" –

+0

Uruchom '' command'' in parens , następnie dla każdego wiersza jego wyjścia: tokenize (linia) z przecinkiem będącym ogranicznikiem i umieść drugi token w zmiennej% ('% F'), a następnie uruchom' echo' z daną wartością zmiennej (sans quotes, to właśnie tylda jest dla).Aby uzyskać bardziej ogólne wyjaśnienie składni 'for' (w tym' for/f') po prostu wykonaj 'help for' na linii poleceń – wmz

+0

Dzięki tona @wmz –

Powiązane problemy