2017-04-05 191 views
-2

的列表中的每个字符串我有一个包含一个低于其他的员工代码列表的文本文件:批处理脚本来计数文件

KUMAA286 
KUMAA286 
MATCHS02 
GANNAS 
MATCHS02 
GANNAS 

我想一个批处理脚本,可以给我一个计数每个雇员代码在一个output.txt文件中。

E.摹:

The number of KUMAA286 is 2 
The number of MATCHS02 is 2 
The number of GANNAS is 2 
+1

你应该显示自己的编码工作,[SO]不是脚本编写服务。 – LotPings

回答

1

简单:

@echo off 
setlocal 

rem Read the strings and count each one on its corresponding array element 
for /F %%a in (input.txt) do set /A "count[%%a]+=1" 

rem Show the results 
for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do echo The number of %%a is %%b 
+0

同意,即使缺少初始化。更简单的话题Powershell one liner:'gc。\ Employees.txt | group |%{“{0}的数目是{1}”-f $ _。Name,$ _。Count}' – LotPings

0

自相矛盾;-)
你必须事先与前一个
每个条目进行比较,如果相同数量高达排序列表。
如果输出计数和最后输入不相同。

有不同的数,这个变化表:

KUMAA286 
GANNAS 
KUMAA286 
MATCHS02 
GANNAS 
GANNAS 

而且这批

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
Set Cnt=-1 
Set Last=n/a 
For /f %%A in (' Sort Employees.txt') Do (
    if %%A neq !Last! (
    if !Cnt! geq 1 Echo The number of !Last! is !Cnt! 
    Set Cnt=1 
    Set Last=%%A 
) Else (
    Set /A Cnt+=1 
) 
) 
If %Cnt% geq 1 Echo The number of !Last! is !Cnt! 

返回结果:

The number of GANNAS is 3 
The number of KUMAA286 is 2 
The number of MATCHS02 is 1 
+0

代码工作正常。谢谢你的帮助 –

+0

我想了解,你能解释什么是Set Last = n/a,什么是不适用 –

+0

这只是为了让var定义任何内容。否则,当第一行中的“!Last!”计算为无效时,第一个if会产生无效比较。 'n/a'通常代表不可用。 – LotPings