PDA

Показать полную графическую версию : [решено] Чтение определённой строки из txt


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

amel27
18-10-2010, 15:17
@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
Выдаёт такую вот ошибочку.

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

amel27
18-10-2010, 17:17
FIND.EXE - штатная системная утилита, должна находиться в каталоге "%windir%\System32\", если её там нет - привет nLite и Ko, если она есть, то проверьте системную переменную PATH: Разное - [решено] Не работают команды в командной строке. (http://forum.oszone.net/showthread.php?t=129149)

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

hxygen
18-10-2010, 19:20
Я уже наглею конечно, но нужно прочитать не одну строку, а две по тому же принципу отбора.

amel27
19-10-2010, 07:24
чтобы она подольше "провисела" »добавьте в конце скрипта строку паузы:
pause>nul

нужно прочитать не одну строку »вообще-то скрипт выводит все подходящие под условие строки

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

amel27
15-11-2010, 06:26
вывести на экран строку после искомого слова »
@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
И этот бат не работает=(((( ничего не находит=( просто запускается и висит.

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




© OSzone.net 2001-2012