Искать несколько файлов в подкаталогах для каждой строки в списке и возвращать список найденных строк - PullRequest
0 голосов
/ 02 мая 2019

У меня есть папка с ~ 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 и выше. Среда может не иметь прав администратора.

1 Ответ

0 голосов
/ 03 мая 2019

Для информации, предоставленной вами при редактировании, для вас может работать следующая строка:

в виде :

@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"
...