Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Вытащить текст из найденной строки. BAT / 10 сообщений из 10, страница 1 из 1
06.08.2008, 06:05
    #35472432
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Сам файл list.txt содержит следующие строчки
Код: plaintext
1.
2.
3.
<field_id>001</field_id>
<field_id>495</field_id>
<field_id>899</field_id>
<field_id>988</field_id>

При выполнении команды

Код: plaintext
FINDSTR  /R "<field_id>98"[0-9] c:\list.txt

выводится следующее
Код: plaintext
<field_id> 988 </field_id>

Задача состоит в том, как мне выдернуть из этой строчки только значение 988
...
Рейтинг: 0 / 0
06.08.2008, 06:06
    #35472433
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Все это нужно в батнике делать, скрипты не предлагать :)
...
Рейтинг: 0 / 0
06.08.2008, 06:10
    #35472437
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
> help for Some examples might help:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

would parse each line in myfile.txt, ignoring lines that begin with
a semicolon, passing the 2nd and 3rd token from each line to the for
body, with tokens delimited by commas and/or spaces. Notice the for
body statements reference %i to get the 2nd token, %j to get the
3rd token, and %k to get all remaining tokens after the 3rd. For
file names that contain spaces, you need to quote the filenames with
double quotes. In order to use double quotes in this manner, you also
need to use the usebackq option, otherwise the double quotes will be
interpreted as defining a literal string to parse.

%i is explicitly declared in the for statement and the %j and %k
are implicitly declared via the tokens= option. You can specify up
to 26 tokens via the tokens= line, provided it does not cause an
attempt to declare a variable higher than the letter 'z' or 'Z'.
Remember, FOR variables are single-letter, case sensitive, global,
and you can't have more than 52 total active at any one time.

You can also use the FOR /F parsing logic on an immediate string, by
making the filenameset between the parenthesis a quoted string,
using single quote characters. It will be treated as a single line
of input from a file and parsed.

Finally, you can use the FOR /F command to parse the output of a
command. You do this by making the filenameset between the
parenthesis a back quoted string. It will be treated as a command
line, which is passed to a child CMD.EXE and the output is captured
into memory and parsed as if it was a file. So the following
example:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

would enumerate the environment variable names in the current
environment.
...
Рейтинг: 0 / 0
06.08.2008, 07:37
    #35472480
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Relic Hunter > help for Some examples might help:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k



гм, а на примере?
...
Рейтинг: 0 / 0
06.08.2008, 07:47
    #35472486
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Во вторых, мне нужно просто строку обработать а не файл.
...
Рейтинг: 0 / 0
06.08.2008, 18:10
    #35474565
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
vista-rusгм, а на примере?
Код: plaintext
1.
2.
3.
4.
5.
list.txt
-------------------------
<field_id>001</field_id>
<field_id>495</field_id>
<field_id>899</field_id>
<field_id>988</field_id>
Код: plaintext
1.
2.
3.
@echo off
FOR /F "tokens=2 delims=<>" %%i in (list.txt) do (
echo  %%i
)
Код: plaintext
1.
2.
3.
 001
 495
 899
 988
...
Рейтинг: 0 / 0
08.08.2008, 04:24
    #35477501
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
СПАСИБО!!!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
01.07.2013, 21:09
    #38316368
KYI
KYI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Добрый день!
Подскажите как можно распарсить вот такую строку
Ответ от 93.158.134.203: число байт=32 время=2мс TTL=56
Необходимо получить чистый ip-адрес.

Пробовал указанный пример и его разные модификации (на что мозгов хватило)
и самое лучшее что у меня получилось
93.158.134.203: число байт=32 время=2мс TTL=56
...
Рейтинг: 0 / 0
01.07.2013, 21:19
    #38316380
KYI
KYI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Еще раз перечитал внимательно справку и вот при таком условии
Код: html
1.
2.
3.
FOR /F "tokens=2,3 delims=Ответ:" %%i in (e:\123.txt) do (
echo  %%i
)


я получил почти то, что надо.
Проблема в том, что перед ip-адресом стоят 3 пробола и в конце один.
Как от них избавиться?
...
Рейтинг: 0 / 0
01.07.2013, 21:23
    #38316388
KYI
KYI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вытащить текст из найденной строки. BAT
Товарищи, прошу прощения - туплю по страшному
пробелы после echo надо убрать и все получается на 1005 как надо.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Вытащить текст из найденной строки. BAT / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]