计算多个文件中多个字符串的出现次数

时间:2016-10-18 08:35:36

标签: batch-file command-line

我在一个文件夹中有多个文本文件。对于每一个,我想搜索3个不同的字符串并将这些字符串的计数加在一起,然后将它们输出到文件中。

这适用于计算不同文件中的单个字符串:

for /f "delims==" %%a in ('dir /b "%CD%\*.txt"') do findstr /r /n "^.*SEARCH_STRING_1.*$" "%%~dpnxa" | find /c "SEARCH_STRING_1" >> "%%~dpacounts.txt"

这会导致文件夹中每个文件的新行计数。如何搜索“SEARCH_STRING_1”,“SEARCH_STRING_2”和“SEARCH_STRING_3”,一起添加计数,并以相同的方式将它们输出到文件中?

1 个答案:

答案 0 :(得分:2)

如果有两个匹配的行应该只计为一个,或者如果一行不可能包含多个匹配

findstr /c:"string1" /c:"string2" /c:"string3" *.txt | find /c /v "" > counts.txt

如果一行可以包含多个匹配,则必须计算每个匹配

(
    findstr /c:"string1" *.txt
    findstr /c:"string2" *.txt
    findstr /c:"string3" *.txt
) | find /c /v "" > counts.txt

当然,根据您的需要调整findstr开关