Показать полную графическую версию : [решено] Чтение определённой строки из txt
Прошу вашей помощи в решении следующей задачи: нужно вывести на экран определённую строку из txt, но не по номеру строки, а по названию (тексту содержащемуся в ней) при этом чтобы первые 10 символов-не выводились (если это осуществимо конечно).
Заранее спасибо.
@for /f "delims=" %%a in ('^<"file.txt" find /i "это текст"') do @(set "$a=%%a"
SetLocal EnableDelayedExpansion& echo !$a:~10!& EndLocal)
Выдаёт такую вот ошибочку.
"find" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
FIND.EXE - штатная системная утилита, должна находиться в каталоге "%windir%\System32\", если её там нет - привет nLite и Ko, если она есть, то проверьте системную переменную PATH: Разное - [решено] Не работают команды в командной строке. (http://forum.oszone.net/showthread.php?t=129149)
Спасибо большое! Всё заработало, можно ли удалить последний символ выводимой строки? И ещё чтобы она подольше "провисела", а то появляется на секунду и тут же исчезает (не всегда же в консоли запускать).
Я уже наглею конечно, но нужно прочитать не одну строку, а две по тому же принципу отбора.
чтобы она подольше "провисела" »добавьте в конце скрипта строку паузы:
pause>nul
нужно прочитать не одну строку »вообще-то скрипт выводит все подходящие под условие строки
rapbit90
14-11-2010, 21:41
hxygen, Отличный батник, но если тебе не трудно, можешь дописать код чтобы выведенная строка записывалась в txt файл?? (я не знаю куда дописать >C:\file.txt) и чтобы он находил не одну такую строку а хотябы 2 строки содержащие искомое слов, этот батник только 1 строку находит, до второй не доходит.
И надеюсь может ты сможешь помочь, мне необходимо вывести на экран строку после искомого слова (find "искомое слово"), просто строка которая мне нужна, она меняется часто, а слово на строку выше всегда одно и тоже.
вывести на экран строку после искомого слова »
@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
И этот бат не работает=(((( ничего не находит=( просто запускается и висит.
rapbit90, ошибка была - выдавал не ту строку, но висеть всё равно не должен... может файл большой?... батник небыстрый - файл обрабатывается в два прохода: сначала ищется номер строки с фразой (1-я строка батника), потом ищется строка с нужным номером +1 (2-я строка батника), для обработки больших файлов лучше использовать сторонние утилиты типа SED/AWK
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.