批处理脚本来计数文件
的列表中的每个字符串我有一个包含一个低于其他的员工代码列表的文本文件:批处理脚本来计数文件
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
简单:
@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
同意,即使缺少初始化。更简单的话题Powershell one liner:'gc。\ Employees.txt | group |%{“{0}的数目是{1}”-f $ _。Name,$ _。Count}' – LotPings
自相矛盾;-)
你必须事先与前一个
每个条目进行比较,如果相同数量高达排序列表。
如果输出计数和最后输入不相同。
有不同的数,这个变化表:
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
代码工作正常。谢谢你的帮助 –
我想了解,你能解释什么是Set Last = n/a,什么是不适用 –
这只是为了让var定义任何内容。否则,当第一行中的“!Last!”计算为无效时,第一个if会产生无效比较。 'n/a'通常代表不可用。 – LotPings
你应该显示自己的编码工作,[SO]不是脚本编写服务。 – LotPings