1 (изменено: o5andrey, 2014-11-11 20:21:47)

Тема: CMD/BAT: Поиск текста в файлах и вывод имён

Здравствуйте. Нужно чтобы сценарий искал заданный текст в заданной папке в наборе текстовых файлов и выдавал не соответствующий текст (согласно шаблону), а список имён файлов в которых этот текст содержится. Я придумал так:

rem применение: scr_find.cmd "моя папка\*" "искомый текст"
@echo off
set text
set otvet
for %%f in (%1) do (
%text% = findstr /d %%f %2
if %text% NEQ "" (%otvet% =+ %~nf))
msg %USERNAME% %otvet%

Подскажите что сделать чтобы работало.
Выскакивает и гаснет окно командной строки, как его остановить, прибавление TIMEOUT /T -1 не помогает...

2

Re: CMD/BAT: Поиск текста в файлах и вывод имён

findstr /M "search" dir\*
( 2 * b ) || ! ( 2 * b )

3 (изменено: o5andrey, 2014-11-12 08:11:25)

Re: CMD/BAT: Поиск текста в файлах и вывод имён

Спасибо. Не ожидал столь оперативный и короткий ответ... Действительно. Написал свой путь к папке в кавычках - нет реакции, без кавычек - "не удаётся открыть": он воспринял путь за 2е папки - в пути встречается точка и пробел, как быть?
Почему не идёт мой мудрёный сценарий?

4

Re: CMD/BAT: Поиск текста в файлах и вывод имён

o5andrey пишет:

Почему не идёт мой мудрёный код?

Потому что у Вас не "мудрёный код", а совсем не код.

5

Re: CMD/BAT: Поиск текста в файлах и вывод имён

Написал свой путь к папке в кавычках - нет реакции...

Всё нормально, ищет, но только по  английски. Где меняется кодировка и какую выбирать?

6

Re: CMD/BAT: Поиск текста в файлах и вывод имён

Так как искать по-русски? Люди, помогите, я учусь! Поменял шрифт на Lucida Console, выполнил команду chcp 1251, не помогает.
Сложный вариант уже кое-что выдаёт - выдаёт моё сообщение, которое введу. Выходит, устранил синтаксические ошибки и заработали две последние команды.


rem применение: scr_find.cmd "искомый текст" "папка\*"
@echo off
for %%f in (%2) do (
set text = findstr /d %1 %%f
if "%text%" NEQ "" (set otvet =+ %%~nf))
msg %USERNAME% %otvet%
pause

7

Re: CMD/BAT: Поиск текста в файлах и вывод имён

Так как искать по-русски? Люди, помогите, я учусь!

Поможем. Для этого Вам для начала необходимо упаковать в архив и выложить на RGhost образцы файлов из «набора текстовых файлов».

8

Re: CMD/BAT: Поиск текста в файлах и вывод имён

http://rghost.ru/59079587

9

Re: CMD/BAT: Поиск текста в файлах и вывод имён

o5andrey, а к чему в архиве документ Microsoft Word? Надеюсь, в нём Вы не собираетесь искать текст посредством пакетного файла?

Прочие два файла в кодировке ANSI/1251. При поиске посредством «find.exe»/«findstr.exe» могут быть проблемы с нахождением искомого на кириллице. Выход — переходить на WSH/PoSH.

10

Re: CMD/BAT: Поиск текста в файлах и вывод имён

o5andrey, не запускайте пакетный файл из командной строки, просто иэменяйте значения переменных в нём самом. Попробуйте так:


@echo off

chcp 1251>nul
set "dir=моя папка"
chcp 866>nul

set "search=бегемот"

for /f "delims=" %%i in ('findstr /ilmc:"%search%" "%dir%\*"') do echo %%~nxi

pause>nul
exit /b

или так:


@echo off

chcp 1251>nul
set "dir=моя папка"
chcp 866>nul

set "search=бегемот"

for /f "delims=" %%i in ('"set /p="%search%"<nul>.tmp& findstr /m /ilg:.tmp "%dir%\*"& del .tmp"') do echo %%~nxi


pause>nul
exit /b

.

11

Re: CMD/BAT: Поиск текста в файлах и вывод имён

к чему в архиве документ Microsoft Word? Надеюсь, в нём Вы не собираетесь искать текст посредством пакетного файла?

В основном у меня txt, но в doc тоже наверно может найти, там же содержится мой текст... Короче, как правило не собираюсь.

Выход — переходить на WSH/PoSH.

Понятно...

не запускайте пакетный файл из командной строки, просто иэменяйте значения переменных в нём самом.

Попробую.