2016-07-11 19 views
0

ich eine Datei haben, die viele Zeilen haben und ich möchte in einer Batch-Datei, in der Lage sein, alle Linien der Personen, Echo, die in jetzt sind ...Hier finden Sie eine Liste von Personen IN

Mein Text Datei ist wie folgt:

LEDEE   IN 2016-07-11 07:49:59             
STEPHAN   IN 2016-07-11 07:56:14             
NADIAB   IN 2016-07-11 07:58:30             
ANGEE   IN 2016-07-11 07:58:59             
STEPHAN   OUT 2016-07-11 08:05:25             
STEPHAN   IN 2016-07-11 08:05:29             
ANGEE   OUT 2016-07-11 08:06:05             
ANGEE   IN 2016-07-11 08:06:11             
ANGEE   OUT 2016-07-11 08:16:11             
JOHN   IN 2016-07-11 08:44:42             
PAUL   IN 2016-07-11 08:48:01             
JOHNNY   IN 2016-07-11 08:49:26             
PABLO   IN 2016-07-11 08:49:41 

Ich möchte in der Lage sein, eine Liste aller Personen, die jetzt IN sind. Das Ergebnis sollte sein:

LEDEE 
STEPHAN 
NADIAB 
JOHN 
PAUL 
JOHNNY 
PABLO 

Ist das möglich?

Dank

+0

Wäre es die Ausgabe an eine Pipe durch 'sort' ruinieren? Wenn nicht, könnten Sie eine "for/F" -Schleife verwenden, um eine Variable auf den Inhalt jeder Zeile zu setzen; und für jede Zeile, wenn es nicht gleich der vorherigen Zeile ist, echo es. Etwas wie 'for/F" delims = "%% I in ('findstr/i" suche "" textfile.txt "^ | sort') mach (irgendwas)'. Weitere Informationen finden Sie unter 'help for' in einer cmd-Konsole. Sie benötigen auch eine verzögerte Erweiterung. Siehe 'Hilfe setlocal' für weitere Informationen. – rojo

Antwort

2

Sie einen Anfang geben:

@echo off 
setlocal EnableDelayedExpansion 
for /f "tokens=1,2" %%a in (text.txt) do set _%%a=%%b 
echo ---- current status: 
for /f "tokens=1 delims=_" %%x in ('set _ ') do echo %%x 
echo ---- People IN: 
for /f "tokens=1 delims=_=" %%x in ('set _ ^|find "=IN"') do echo %%x 
echo ---- People OUT: 
for /f "tokens=1 delims=_=" %%x in ('set _ ^|find "=OUT"') do echo %%x 
+0

Die Person, die OUT ist, sollte nicht im IN-Abschnitt sein, auch wenn eine Präzedenzfall-Zeile besagt, dass er IN –

+0

war, dies erhält den letzten Status für jede Person. Wenn man also OUT bekommt und später wieder einsteigt (wie Stephan und Angee in Ihrem Beispiel), sollten sie dann nicht als IN gelistet sein? – Stephan

+0

Ja, sie sollten –