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

Batch file 计算多个文件中多个字符串的出现次数,batch-file,command-line,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" 这将导致文件夹中每

我在一个文件夹中有多个文本文件。对于每个字符串,我想搜索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\u STRING\u 1”、“search\u STRING\u 2”和“search\u STRING\u 3”,将计数相加,并以相同的方式将它们输出到文件中?

如果一行有两个匹配项,则应仅计算为一个,或者如果一行不可能包含多个匹配项

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
开关

如果一行包含多个字符串,是否应将其计为一个或多个?我想这不会发生在我正在处理的文件中。在添加
|find/c/v”“
位之前,第一个开关工作得很好。然后抛出一堆
,进程无法访问该文件,因为它正被另一个进程使用。FINDSTR:写入错误
。它在我的问题中列出的命令中运行良好,但不适用于多个搜索字符串?@Aeon2058,经过测试并正常工作。如果我不得不打赌您的命令行中存在语法问题,或者您有另一个命令正在写入输出文件。