Показать полную графическую версию : [решено] Нужен Bat-ник который будет искать слово в текстовом файле .txt
Alexzander_bas
30-05-2011, 06:16
Нужен Bat-ник который будет искать слово в текстовом файле .txt. По результатам поиска нужно записать в переменную 1 или 0(1- если слово найдено, 0- если не найдено). данную переменную планируется использовать с оператором IF (если =1, то делаем то то, если равно 0 то делаем другое)
Foreigner
30-05-2011, 06:35
Alexzander_bas,
@echo off
setlocal
set "tosearch=word"
1>nul findstr "\<%tosearch%\>" 1.txt && set "var=1" || set "var=0"
if %var% equ 1 (echo doing something) else (echo doing other)
Можно и без переменной, а сразу по результату поиска. ( команда && успех || неудача )
Alexzander_bas
30-05-2011, 08:08
Спасибо, батник работает. Можно еще один глупый вопрос: Как искать фразу? допустим Copy complete. чтоб искалась именно эта последовательность слов+ с учетом заглавной буквы.
Foreigner
30-05-2011, 20:02
Как искать фразу? допустим Copy complete »
findstr /c:"Copy complete"
Как искать фразу? »
А как найти одинаковые фразы/строки и удалить их.
И , как второй вариант : удалить всё , кроме указанных строк/фраз/слов ?
Спасибо!
Например, текст:
Folder\aaa.dll
- файл перемещён
Folder2\bbb.dll
- файл перемещён
Folder3\ccc.dll
- файл перемещён
и т.д. .............
1. Найти и удалить все заданные одинаковые строки : "- файл перемещён"
2. Удалить всё , кроме указанных строк : "- файл перемещён"
Я не силен в командной строке, только осваиваю. Может всё намного проще ?
Может в первом случае можно просто вывести в текстовый файл список всех строк за исключением указанной, с помощью команды :
find /V???
Спасибо !
Foreigner
02-06-2011, 06:14
shao,
1>1.tmp findstr /v /c:"- файл перемещён" 1.log
move 1.tmp 1.log
Для второго так же, но без ключа /v. Для кириллицы кодировка шаблона поиска должна совпадать с кодировкой лога.
Foreigner, а если не затруднит (для лучшего понимания) можете объяснить работу кода , пожалуйста....
Foreigner
02-06-2011, 17:57
shao,
1>1.tmp -- записываем stdout в файл 1.tmp
findstr /v /c:"pattern" -- находим в файле 1.log все строчки которые ( ключ /v ) не содержат искомую строку ( ключ /с ),
заменяем файлы
Все это есть в справке.
set "tosearch=word"
1>nul findstr "\<%tosearch%\>" 1.txt && set "var=1" || set "var=0"
if %var% equ 1 (echo doing something) else (echo doing other)
Возможно, чтобы findstr искала %tosearch% по первой или второй строкам?
И чтобы %var% был номером строки?
Помогите пожалуйста!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.