Batch file Windows批处理脚本:检查文件中是否出现

Batch file Windows批处理脚本:检查文件中是否出现,batch-file,Batch File,我需要写一个windows批处理脚本。 从给定的目录开始,我需要检查每个文件中是否至少有一个给定的文本出现在具有给定文件名的文件中 例如: 从目录C:\MyDir开始,我需要检查这个目录和所有子目录中是否有名为“MyFile.txt”的文件。找到的每个文件必须至少出现一次文本“MyText” 到目前为止,我得到的是: (MyFile.txt*)中的/R C:\MyDir%%f的do( FINDSTR/i/c:“MyText”%%~f ) 问题: 这也将与名为MyFile.txtXXX的文件匹配

我需要写一个windows批处理脚本。 从给定的目录开始,我需要检查每个文件中是否至少有一个给定的文本出现在具有给定文件名的文件中

例如: 从目录C:\MyDir开始,我需要检查这个目录和所有子目录中是否有名为“MyFile.txt”的文件。找到的每个文件必须至少出现一次文本“MyText”

到目前为止,我得到的是:

(MyFile.txt*)中的/R C:\MyDir%%f的
do(
FINDSTR/i/c:“MyText”%%~f
)

问题:

  • 这也将与名为MyFile.txtXXX的文件匹配
  • 它只打印事件,但不“返回”是否发现此类事件。此代码位于批处理脚本中,如果有一个文件没有出现此错误,则批处理脚本必须带错误退出

读取
findstr/?
:在文件中搜索字符串

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]
  …
  /S         Searches for matching files in the current directory and all subdirectories.
  …
下一个命令应查找并显示所有匹配项:

FINDSTR /S /i /c:"MyText" C:\MyDir\MyFile.txt
下一个命令应查找所有匹配项并仅显示(完全限定)文件名:

FINDSTR /M /S /i /c:"MyText" C:\MyDir\MyFile.txt

读取
findstr/?
:在文件中搜索字符串

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]
  …
  /S         Searches for matching files in the current directory and all subdirectories.
  …
下一个命令应查找并显示所有匹配项:

FINDSTR /S /i /c:"MyText" C:\MyDir\MyFile.txt
下一个命令应查找所有匹配项并仅显示(完全限定)文件名:

FINDSTR /M /S /i /c:"MyText" C:\MyDir\MyFile.txt

findstr/v
不能像这里预期的那样工作,因此您必须使用一个小技巧:使用
findstr
并使用它的errorlevel来查找“未找到字符串”:

  • for/r
    是递归的(也在子目录中搜索)(使用
    for
    而不是
    findstr/s
    逐个处理每个文件,以便能够检查每个文件的错误级别,而不是完整的
    findstr/s
    列表)
  • &&
    的工作原理是“如果上一个命令(
    findstr
    )成功,则”
  • |
    的作用类似于“如果上一个命令(
    findstr
    )失败,那么”

findstr/v
无法按此处的预期工作,因此您必须使用一个小技巧:使用
findstr
并使用其错误级别来查找“未找到字符串”:

  • for/r
    是递归的(也在子目录中搜索)(使用
    for
    而不是
    findstr/s
    逐个处理每个文件,以便能够检查每个文件的错误级别,而不是完整的
    findstr/s
    列表)
  • &&
    的工作原理是“如果上一个命令(
    findstr
    )成功,则”
  • |
    的作用类似于“如果上一个命令(
    findstr
    )失败,那么”

为什么
MyFile.txt*
?这可以翻译成“查找所有不包含“MyText”的“MyFile.txt”吗?是的,这就是目标:“查找所有不包含“MyText”的“MyFile.txt”为什么
MyFile.txt*
?这可以翻译成“查找所有不包含“MyText”的“MyFile.txt”?是的,这就是目标:查找所有不包含“MyText”Thx的“MyFile.txt”作为答案。然而,有了这句话,我不可能找到没有给定事件的文件。谢谢你的回答。然而,有了这句话,我不可能找到没有给定事件的文件。