Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 19
1

Чтение текста, расположенного между определёнными тегами

09.06.2013, 21:37. Показов 1008. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос такой, к Гуру форума, по теме чтения из файла.
Просто Google отказывается помогать

Не как не могу понять. Как организовать чтение строк из файла, только между нужными маркерами?
Просто в полученном с ftp файле, количество строк не фиксировано, за то есть маркеры.
Выглядит примерно так:
[msg]
Текст
[/msg]

[msg2]
Текст
[/msg2]

И в консоль, нужно выдать только текст между "[msg2] ... [/msg2]".
Своим мозгом понять, как это сделать не получается..

Может кто-нибудь уже сталкивался... Помогите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2013, 21:37
Ответы с готовыми решениями:

Запись между определенными тегами XML
Господа, подскажите мне неумелому.=) Вобщем ситуация такая - У меня есть исходный XML-файл в...

Как вырезать код между определенными тегами?
Добрый день, как вырезать код, который я не знаю, между определенными тегами? Например такими:...

Чтение текста из файла, расположенного удалённо (в интернете)
Доброе утро.Как прочитать содержимое текстового файла расположенного удалённо(в интернете) и...

Чтение текста из Ini с тегами RTF
Возникла ситуация, при чтении стоки Ini часть текста обрезалась (Вывожу в RichEdit). Я так понимаю,...

8
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
09.06.2013, 21:49 2
Bash
1
2
3
4
5
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%A in (file.txt) do (if %%A==[msg] (set msgmode=1)
if %%A==[/msg] (set msgmode=0)
if "!msgmode!"=="1" (echo.%%a)
)
2
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 19
09.06.2013, 21:59  [ТС] 3
Великолепно!! Огромное, человеческое спасибо.
Только:
Bash
1
(echo.%%a)
Нужно исправить на:
Bash
1
(echo.%%A)
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.06.2013, 00:12 4
А если еще и переставить местами логику, то не будет захватывать первые теги:

Bash
1
2
3
4
5
6
7
8
@echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%A in (file.txt) do (
  if %%A==[/msg] (set msgmode=0)
  if "!msgmode!"=="1" (echo.%%A)
  if %%A==[msg] (set msgmode=1)
)
pause
2
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 19
10.06.2013, 02:02  [ТС] 5
Dragokas, спасибо
В конечном итоге у меня получилось вот что:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@echo off
chcp 1251
:start
set host=192.168.0.17
set port=21
set user=root
set password=
set folder=firewall/log
set file=%date%.log
set CommFTP="%temp%\FTP_Script.txt"
if exist %temp%\%file% del /f /q "%temp%\%file%"
if exist %CommFTP% del /f /q %CommFTP%
echo open %host% %port%>> %CommFTP%
echo %user%>> %CommFTP%
echo %password%>> %CommFTP%
echo cd "%folder%">> %CommFTP%
echo binary>> %CommFTP%
echo get "%file%" "%temp%\%file%">> %CommFTP%
echo disconnect>> %CommFTP%
echo bye>> %CommFTP%
start /min /wait ftp.exe -s:%CommFTP%
del /f /q %CommFTP%
if exist "%temp%\%file%" (
    goto view
  ) else (
    goto start
)
:view
echo  Error list
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%A in ("%temp%\%date%.log") do (
  if %%A==[/error] (set msgmode=0)
  if "!msgmode!"=="1" (echo.%%A)
  if %%A==[error] (set msgmode=1)
)
echo.
echo  Visit blocked sites
for /f "usebackq tokens=*" %%A in ("%temp%\%date%.log") do (
  if %%A==[/block] (set msgmode=0)
  if "!msgmode!"=="1" (echo.%%A)
  if %%A==[block] (set msgmode=1)
)
pause
del /f /q "%temp%\%date%.log"
exit
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.06.2013, 23:08 6
Сейчас модно так:

Bash
1
2
3
4
5
6
7
8
9
10
(
echo open %host% %port%
echo %user%
echo %password%
echo cd "%folder%"
echo binary
echo get "%file%" "%temp%\%file%"
echo disconnect
echo bye
) > "%CommFTP%"
1
Eva Rosalene
11.06.2013, 11:48
  #7

Не по теме:

Не по теме: ftp.exe может работать не через параметр -s:, а через перенаправление ввода?

0
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 19
11.06.2013, 12:51  [ТС] 8
Dragokas, был не в курсе, спасибо.

FraidZZ, я конечно не гуру cmd, но на сколько я знаю, нет. Не видел не одного примера, подобной работы.
0
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
11.06.2013, 13:24 9
Цитата Сообщение от Himmler Посмотреть сообщение
FraidZZ, я конечно не гуру cmd, но на сколько я знаю, нет. Не видел не одного примера, подобной работы.
А я проверил. Вместо тысячи слов - скриншот
Миниатюры
Чтение текста, расположенного между определёнными тегами  
0
11.06.2013, 13:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2013, 13:24
Помогаю со студенческими работами здесь

Парсинг текста между тегами <td> и </td>
Решил написать программу для работы с базой. Достал html код в richTextBox1. Нужные мне значения...

Парсинг текста между тегами <b></b>
В веб браузере delphi загружена страница как достать все Элементы в теге &lt;b&gt;1204884&lt;/b&gt;...

Копирование текста между тегами
Есть строка Fljsdklajkldaskdhalksdhl необходимо копировать текст только между первыми кавычками....

Парсинг текста между тегами <td> и </td>
На странице есть несколько сотен элементов, отбирающихся по селектору...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru