2012-11-22 8 views
11

ich den folgenden BefehlWie ein bestimmtes Feld vom Ausgang des Taskliste auf der Windows-Kommandozeile

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

Der Ausgang von dem

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

I-Eingabeaufforderung an den Fenstern lief extrahieren müssen extrahiere nur ein Feld, die PID, dh die Nummer 6164 aus dem obigen Ausgang.

Wie erreiche ich das? Allgemeiner, wie extrahiere ich eine Teilmenge (1/mehr) der Felder aus der Ausgabe eines Befehls in der Windows-Befehlszeile?

Antwort

7

der einfachste Weg ist mit der Verwendung von WMIC:

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

EDIT: Als WMIC ist nicht Teil der Hause Ausgaben von Fenstern:

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

Hier wird CMD von der caption.Sie können es in den Suchen und Aufgabenliste Parameter ändern. Wenn dies in Batch-Datei verwendet, die Sie benötigen %%B und %%A

+2

Ich kann nichts auf der Maschine installieren und muss die Standard-Windows-Installation verwenden –

+0

WMIC ist ein Standard-Befehl für Windows.Except Home-Editionen ... Ich werde sowieso andere approches in meiner Antwort hinzufügen. – npocmaka

+0

PS: Denken Sie daran Sie müssen richtig einstellen t die Token, wenn der Dateiname der Anwendung Leerzeichen enthält. – ElektroStudios

3

Sie können wmic Befehl nicht die Ausgabe filtern:

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

UPDATE: Eine andere Art und Weise:

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

PS: Denken Sie daran, dass Sie die Token richtig setzen müssen, wenn der Dateiname der Anwendung Leerzeichen enthält.

13

ähnlich wie in früheren Antworten, aber verwendet bestimmten Schalter in tasklist Header zu überspringen und korrekt unabhängig von Räumen in Bildnamen verhalten:

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

(wie läuft direkt von cmd Linie, wenn von Batch-Laufe ersetzen %F mit %%F

+0

Alle 3 Antworten funktionieren für mich, aber ich verstehe sie nicht :( Kann jemand ihr Codefragment erklären oder auf Dokumentation für 'for/f', 'Token', 'delims' zeigen –

+0

Führen Sie "Befehl" in Parens , dann für jede Zeile der Ausgabe: tokenize (die Zeile) mit Komma als Trennzeichen und ein zweites Token in% Variable ('% F') und dann' echo' mit einem gegebenen Variablenwert (sans quotes, das ist Tilde) ist für).Für eine allgemeinere Erklärung für 'for' Syntax (einschließlich' für/f') einfach 'help for' an der Kommandozeile – wmz

+0

Danke eine Tonne @ wmz –