Войти

Показать полную графическую версию : [findstr] не ищет так как должен,в чем дело?или что не так?


nfs911
22-07-2013, 08:48
Всем привет.
Содержание тестового батника

@echo off
findstr /r /v /c:"Добавление\s.*\sв\sочередь\sна\sраспаковку" target.txt
pause


проблема в том что findstr не игнорирует а выводит всё
А вот AkelPad находит на ура

Помогите решить эту проблему
PS:после планируется использовать вот так expand.exe | findstr /r /v /c:"Добавление\s.*\sв\sочередь\sна\sраспаковку">>log.txt (если что не так поправьте) Вообще цель такая:вывести только ошибки,а успешные игнорировать
Содержание target.txt
прикрепил

Iska
22-07-2013, 09:17
С чего Вы решили, что «findstr.exe» понимает «\s»? Вот что сказано: Findstr (http://technet.microsoft.com/en-us/library/bb490907.aspx) (остальное — здесь: Findstr - Search for strings | SS64.com (http://ss64.com/nt/findstr.html) ;)).

findstr не игнорирует а выводит всё »
Поясните по-русски, что Вы понимаете под «не игнорирует»? «/v» означает «Вывести строки, не удовлетворяющие заданным условиям». В Вашем случае, поскольку ни одна строка не попадает под заданный шаблон (прежде всего из-за Вашей ошибки с «\s»), потому все строки и попадают в вывод.

Если хотите пользовать более-менее полноценный RegExp — либо используйте WSH/PoSH, либо портированные на Windows утилиты Unix.

nfs911
22-07-2013, 09:25
Iska, Тогда как сцепить предложение?т.к.пробелы воспринимаются как перечисление фраз.

используйте WSH/PoSH »
я не вникал.Если вам нетрудно то реализуйте данный скрипт на WSH или PoSH и чтобы можно было подставить в bat

Iska
22-07-2013, 10:38
nfs911, Вы поясните, что именно Вам нужно. Что есть — Вы выложили. Что нужно получить на выходе?

nfs911
22-07-2013, 10:59
Что нужно получить на выходе? »
вывести только ошибки »
а сообщения типа "файл распакован и всё ок" не выводить
это по сути

Iska
22-07-2013, 11:13
type target.txt | findstr.exe /r /v /c:"Добавление .* в очередь на распаковку"
Трока строка с ошщибкой
Добавление вв иоааааа
чтото в очередь на рапаковку
оооооооо вот это уже новость

а сообщения типа "файл распакован и всё ок" не выводить »
«Типа» — не подходит. Выкладывайте оригинал файла, выкладывайте точный набор фраз.

nfs911
22-07-2013, 12:19
type target.txt | findstr.exe /r /v /c:"Добавление .* в очередь на распаковку" »
Странно,я так 1000 раз пробовал и ничего,а теперь всё ок...наверно с утра туплю
точный набор фраз. »
Я пологаю
findstr.exe /r /v /c:"Предложение1" /c:"Предложение2" /c:"Предложение3" /c:"Предложение4" /c:"Предложение5"

«Типа» — не подходит. »
Да я тут подумал через %errorlevel%
типа if %errorlevel% == 1 >>log.txt :)

Iska
22-07-2013, 12:30
Я пологаю
findstr.exe /r /v /c:"Предложение1" /c:"Предложение2" /c:"Предложение3" /c:"Предложение4" /c:"Предложение5" »
«Точный набор фраз» :lol:. Ну, суть Вы уловили, это главное.

Да я тут подумал через %errorlevel%
типа if %errorlevel% == 1 >>log.txt »
Ничего не понял.




© OSzone.net 2001-2012