如何查找多次出现特定字符串的文件
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
命令。
我需要帮助来调整我的批处理脚本,以便它只选择出现 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
命令。