Вот мое трехфайловое решение для DOS, но я все еще ищу подходящее решение для Windows 7, если у кого-нибудь оно есть:
1. search.bat
@ECHO off
FOR /r %%a IN (*.*) DO CALL process.bat %%a
Поиск всех файлов рекурсивно и выполнение process.bat
для каждого из них.
2. process.bat
@ECHO Off
ECHO "%1" >> output.txt
TYPE "%1" | FINDSTR /i "search_string_here" >> output.txt
Печатает имя каждого файла в кавычках, потому что некоторые файлы нарушают код пакетного файла без, затем находит строку поиска search_string_here
и печатает всю строку, в которой находится строка поиска.
3. output.txt (пример вывода)
Содержит выходные данные, отформатированные следующим образом: поиск search_string_here
в моем project_name
проекте Java, хранящемся в D:\project_name\
, с отображением всех найденных файлов, а также результатов, если таковые имеются:
"D:\project_name\.classpath"
"D:\project_name\.project"
<name>search_string_here</name>
"D:\project_name\content_search_all_files.bat"
"D:\project_name\output.txt"
<name>search_string_here</name>
"D:\project_name\pom.xml"
...
Вы можете видеть, что search_string_here
было найдено, полная строка <name>search_string_here</name>
, в файле D:\project_name\.project
... среди других результатов.
Опять же, я все еще ищу подходящее решение для Windows 7, если у кого-то оно есть.
Предупреждение: ошибка «слишком длинная строка»; FINDSTR может содержать ошибки:
Очевидно, FINDSTR
Очевидно, что «слишком длинная строка» является универсальным сообщением для ряда
разные ошибки. У FINDSTR есть некоторые проблемы. Некоторое время назад я сказал, что
FINDSTR был незначительно полезен. После сегодняшнего дня я бы сказал, что это еще меньше
полезнее, чем я думал тогда.
- http://blog.mischel.com/2008/10/14/copying-large-files-on-windows/