批处理脚本 - 查找文件中是否缺少字符串,显示输出

时间:2013-01-17 14:20:20

标签: windows batch-file batch-processing findstr

我有10个文件夹的集群,每个文件夹有1000个程序文件。我需要在这些文本文件中搜索MISSING字符串。所有文件必须以$ O123456.MIN%开头(123456是随机文件名)。我知道如何查找字符串是否存在,但如何识别该字符串是否不存在?

一旦识别出来,哪个文件缺少字符串,我想收集报告或该文件的副本,移动到另一个文件夹。

2 个答案:

答案 0 :(得分:0)

这会将所有没有该字符串的文件输出到文件Missing.txt

for %%a in (*.*) do (
find "$O123456.MIN%" %%a
if %errorlevel%==1 echo %%a >Missing.txt
)

答案 1 :(得分:0)

您的要求不明确。我假设以下内容:

1 - 10个文件夹的“群集”包含特定根文件夹中的所有文件夹。

2 - 您的文本文件都有.txt扩展名

3 - 您要报告指定文件夹中第一行不以$O*.MIN%开头的所有文件,其中*代表任意一个或多个字符,OMIN区分大小写。

@echo off
setlocal
set "rootFolder=c:\yourRootPath"
set "fileMask=*.txt"
set "outFile=missing.txt"

>"%outFile%" (
  for /d %%D in ("%rootFolder%") for %%F in ("%%D\%fileMask%") do (
    findstr /nbr "$O..*\.MIN%%" "%%F" | findstr /bl "1:" >nul || echo %%F
  )
)

如果您的实际要求不同,则可能不会花费太多代码更改。例如,以下任何更改都很容易实现:

  • 更改文件掩码
  • 使搜索不区分大小写
  • 递归处理根文件夹中的所有文件夹
  • 处理特定文件夹列表
  • 限制随机文件中可以使用的字符和/或字符数(您的0123456)