Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Чтение определённой строки из txt (http://forum.oszone.net/showthread.php?t=188652)

hxygen 18-10-2010 14:49 1521510

Чтение определённой строки из txt
 
Прошу вашей помощи в решении следующей задачи: нужно вывести на экран определённую строку из txt, но не по номеру строки, а по названию (тексту содержащемуся в ней) при этом чтобы первые 10 символов-не выводились (если это осуществимо конечно).
Заранее спасибо.

amel27 18-10-2010 15:17 1521531

Код:

@for /f "delims=" %%a in ('^<"file.txt" find /i "это текст"') do @(set "$a=%%a"
SetLocal EnableDelayedExpansion& echo !$a:~10!& EndLocal)


hxygen 18-10-2010 17:06 1521617

Выдаёт такую вот ошибочку.

"find" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

amel27 18-10-2010 17:17 1521621

FIND.EXE - штатная системная утилита, должна находиться в каталоге "%windir%\System32\", если её там нет - привет nLite и Ko, если она есть, то проверьте системную переменную PATH: Разное - [решено] Не работают команды в командной строке.

hxygen 18-10-2010 18:55 1521683

Спасибо большое! Всё заработало, можно ли удалить последний символ выводимой строки? И ещё чтобы она подольше "провисела", а то появляется на секунду и тут же исчезает (не всегда же в консоли запускать).

hxygen 18-10-2010 19:20 1521698

Я уже наглею конечно, но нужно прочитать не одну строку, а две по тому же принципу отбора.

amel27 19-10-2010 07:24 1522005

Цитата:

Цитата hxygen
чтобы она подольше "провисела" »

добавьте в конце скрипта строку паузы:
Код:

pause>nul
Цитата:

Цитата hxygen
нужно прочитать не одну строку »

вообще-то скрипт выводит все подходящие под условие строки

rapbit90 14-11-2010 21:41 1542708

hxygen, Отличный батник, но если тебе не трудно, можешь дописать код чтобы выведенная строка записывалась в txt файл?? (я не знаю куда дописать >C:\file.txt) и чтобы он находил не одну такую строку а хотябы 2 строки содержащие искомое слов, этот батник только 1 строку находит, до второй не доходит.
И надеюсь может ты сможешь помочь, мне необходимо вывести на экран строку после искомого слова (find "искомое слово"), просто строка которая мне нужна, она меняется часто, а слово на строку выше всегда одно и тоже.

amel27 15-11-2010 06:26 1542880

Цитата:

Цитата rapbit90
вывести на экран строку после искомого слова »

Код:

@echo off
set file=1.txt
set word=искомое слово

for /f "tokens=1  delims=[]" %%n in ('find /i /n "%word%" ^<"%file%"') do set /a "$n=%%n+1"
for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%file%"^|findstr /b "\[%$n%\]"') do echo.%%b

P.S. Если таких строк несколько, выводится последняя.

rapbit90 15-11-2010 23:42 1543570

И этот бат не работает=(((( ничего не находит=( просто запускается и висит.

amel27 16-11-2010 02:53 1543631

rapbit90, ошибка была - выдавал не ту строку, но висеть всё равно не должен... может файл большой?... батник небыстрый - файл обрабатывается в два прохода: сначала ищется номер строки с фразой (1-я строка батника), потом ищется строка с нужным номером +1 (2-я строка батника), для обработки больших файлов лучше использовать сторонние утилиты типа SED/AWK


Время: 18:49.

Время: 18:49.
© OSzone.net 2001-