在子目录中的多个文件中搜索列表中的每个字符串和 return 找到的字符串列表

Search multiple files in subdirectories for each string in a list and return a list of strings found

我有一个文件夹,在多个子文件夹中包含约 20,000 个文件。这些文件有不同的扩展名,但它们的内容都是文本。我还有一个约 500 个名字的文本列表。我想在所有文件中搜索文本列表中的每个名称,一次一个,以确定该名称是否出现在任何文件中。

所需的输出是一个约 500 行的文本列表(或者无论搜索多少个名字),每行带有一个 1(如果找到该名字,无论找到多少次)或一个 0(如果没有)。该文件的顺序将与输入文本列表相匹配。

例如,

searchstring.txt
   nameA
   nameB
   nameC

searchfolder
  subfolder1
      file.abc    (references name A)
      file2.xyz   (no references)
  subfolder2
      file.xyz     (no references)
      file3.xyz    (references name A)
  subfolder3
      file4.abc     (no references)
      file5.xyz    (references name A, name C)

result.txt
   1
   0
   1

理想情况下,将使用批处理文件调用搜索,其中包含 Windows 7 及更高版本上可用的命令。该环境可能没有管理员权限。

对于您在编辑中提供的信息,以下单行可能对您有用。

作为 :

@For /F UseBackDelims^=^ EOL^= %%A In ("searchstring.txt")Do @(FindStr /LIMPS "%%~A" "searchfolder\*.*">Nul&&(Echo 1)||Echo 0)>>"result.txt"

提示符下输入:

For /F UseBackDelims^=^ EOL^= %A In ("searchstring.txt")Do @(FindStr /LIMPS "%~A" "searchfolder\*.*">Nul&&(Echo 1)||Echo 0)>>"result.txt"