首页 > 解决方案 > 计数频率字符串重复批处理文件

问题描述

源文件,A.txt

7895537000011
7895537000028
7895537000035
7895537000042
7895537000059
7895537000066
7895537000011
7895537000011
7895537000028
7895537000028
7895537000028
7895537000059
7895537000059

存档目的地,B.txt (我需要一个给我这个结果的批次)

7895537000011,3
7895537000028,4
7895537000035,1
7895537000042,1
7895537000059,3
7895537000066,1

 

setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (Inventario_%loja%_%dia%-%mes%-%ano%_%hour%h%min%m%secs%s.inv) do (
    echo %%a,1 >>C:\Inventario\Inventario_%loja%_%dia%-%mes%-%ano%_%hour%h%min%m%secs%s\Inventario_%loja%_%dia%-%mes%-%ano%_%hour%h%min%m%secs%s.log
)

我尝试编辑上面的脚本,但效果不佳,我不知道从哪里开始。

标签: batch-filescripting

解决方案


  • 清除环境变量
  • 使用 a 读取文件for /f并将递增计数存储在 var 中_[number]
  • 循环遍历变量_[number]和输出计数。

:: Q:\Test\2018\07\12\SO_51312947.cmd
@Echo off
Set "FileIn=SO_51312947_a.txt"
Set "FileOut=SO_51312947_b.txt"

:: clear Env vars _[]
For /f "delims==" %%A in ('set _[ 2^>Nul') Do set "%%A="

:: read file, count entries
For /f "usebackq" %%A in ("%FileIn%") Do Set /A "_[%%A]+=1"

:: output environment vars
( For /f "Tokens=1-3delims=[]=" %%A in ('Set _[') do Echo %%B,%%C
) > "%FileOut%"
Type "%FileOut%"

样本输出:

> SO_51312947.cmd
7895537000011,3
7895537000028,4
7895537000035,1
7895537000042,1
7895537000059,3
7895537000066,1

推荐阅读