Пакетный файл, чтобы найти все файлы в каталоге, содержащем строку HTML, а затем вывести список в текстовый файл - PullRequest
0 голосов
/ 09 сентября 2009

Я сделал несколько попыток, но не получил ничего, кроме «не могу открыть ...», поэтому я спрашиваю здесь:

Я хочу найти все экземпляры строки "НЕКОТОРЫЙ ТЕКСТ" в каталоге, полном HTML-файлов. Затем результаты поиска должны быть выведены в файл в том же каталоге (D: \ myfiles)

Ответы [ 2 ]

3 голосов
/ 09 сентября 2009

Вот пример командного файла, который сделает свое дело.

@echo off
setlocal
pushd D:\myfiles

rem case-insensitive search for the string "SOME TEXT" in all html files
rem in the current directory, piping the output to the results.txt file
rem in teh same directory
findstr /ip /c:"SOME TEXT" *.html > results.txt

popd
endlocal

Обновление : Некоторые предостережения при использовании команды findstr.

Если ваша строка содержит угловые скобки, вы должны экранировать их, используя escape-символ CMD - ^. Итак, если вы хотите найти <TITLE>, вы должны указать его как /c:"^<TITLE^>".

Если вам нужны только имена файлов, измените / ip на / im. Также вы можете добавить / s для поиска подпапок. В общем, вы можете поиграть с различными опциями findstr, перечисленными в findstr /?.

Findstr найдет текст только в файлах в кодировке UTF-8. Если файлы HTML имеют кодировку UTF-16 (т. Е. Каждый символ занимает два байта), findstr не найдет текст.

Я бы также предложил сначала запустить команду без передачи в файл results.txt, чтобы получить правильные параметры findstr и убедиться, что она выводит то, что вам нужно.

0 голосов
/ 10 сентября 2009
for %%f in (*.html) do findstr /i /m /p /c:"SOME TEXT" "%%f" >> results.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...