Войти

Показать полную графическую версию : [решено] Нужен 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"

shao
01-06-2011, 00:02
Как искать фразу? »
А как найти одинаковые фразы/строки и удалить их.
И , как второй вариант : удалить всё , кроме указанных строк/фраз/слов ?
Спасибо!

amel27
01-06-2011, 07:30
shao, уточните задачу

shao
02-06-2011, 01:24
Например, текст:

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. Для кириллицы кодировка шаблона поиска должна совпадать с кодировкой лога.

shao
02-06-2011, 09:33
Foreigner, а если не затруднит (для лучшего понимания) можете объяснить работу кода , пожалуйста....

Foreigner
02-06-2011, 17:57
shao,
1>1.tmp -- записываем stdout в файл 1.tmp
findstr /v /c:"pattern" -- находим в файле 1.log все строчки которые ( ключ /v ) не содержат искомую строку ( ключ /с ),
заменяем файлы

Все это есть в справке.

Arttem
06-06-2011, 16:51
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