2016-07-11 21 views
0

我有有许多行的文件列表,我希望能够在一个批处理文件,来呼应,现在都在人的所有行...得到人

我的文字文件是这样的:

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 

我希望能够呼应所有在IN的人的列表。 结果应该是:

LEDEE 
STEPHAN 
NADIAB 
JOHN 
PAUL 
JOHNNY 
PABLO 

这可能吗?

感谢

+0

难道断送输出到它管道'sort'?如果没有,你可以使用'for/F'循环来为每行的内容设置一个变量;对于每一行,如果它不等于上一行,则对其进行回显。像'for/F'delims =“%%我在('findstr/i”search“”textfile.txt“^ | sort')do(某些东西)''。有关更多信息,请参阅cmd控制台中的“help for”。您还需要延迟扩展。有关更多信息,请参阅'help setlocal'。 – rojo

回答

2

给你一个开始:

@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

OUT的人不应该在IN部​​分,即使先例行表示他在IN –

+0

这将获得每个人的最后状态。所以如果一个人得到OUT并且以后再次获得IN(例如Stephan和Angee在你的例子中),他们不应该被列为IN吗? – Stephan

+0

是的,他们应该 –