如何查找多次出现特定字符串的文件

How to find files with multiple occurrences of a specific string

我需要帮助来调整我的批处理脚本,以便它只选择出现 2 次或更多次我正在搜索的单词的文件。目前,这为我提供了所有包含该词的文件,但我不需要该词仅出现一次的文件:

for /f "delims=" %A in ('findstr /i /M "myword" *.txt') do copy "%A" "C:\Desktop\newfolder"

我怎样才能改变它,让它只复制多次出现“myword”的文本文件?

正如 Stephan 提到的,您可以在 for 循环中使用 find 命令来捕获文件名和相关单词的计数。然后,您可以根据大于 (GTR) 1 计算计数并将文件复制到新位置:

for /f "tokens=2,3 delims=: " %%a in ('find /i /c "myword" *.txt') do if %%b GTR 1 copy "%%a" "C:\Desktop\newfolder"
@echo off
for %%a in (*.txt) do ( 
  for /f %%b in ('type "%%a"^|find /c "myword"') do (
    if %%b geq 2 echo %%a    [actual count: %%b]
  )
)

备注:

  • find /c 不计算字符串的出现次数,而是计算包含该词(一次或多次)的行,虽然不相同但可能对您来说已经足够了。
  • 您可能希望 find /i /c 使其不区分大小写(查找“myword”和“MyWord”)
  • echo %%a [actual count: %%b] 仅用于故障排除,您想在最终代码中将其替换为 copy 命令。