Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Maret
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 51
1

Распарсить строку и добавить объяснение

17.02.2015, 16:23. Просмотров 973. Ответов 2
Метки нет (Все метки)

Нужно распарсить строку вида:
[20141030:103909:0000]APP10:000001:02:86

Есть текстовик DOC.txt в котором записаны описания к этой строке:

APP10-Инициализация цикла ожидания событий#000001 Иницоперации#000002 Бла-бла-бла
APP12-Проксирование#000023 Запуск анализа#000045 Запуск ИН

Проблема в том как из DOC.txt вставить описания.

Windows Batch file
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
set mia=
set /p mia="Paste your string: "
 
:: Получаем дату
set dt=%mia:~1,8%
 
:: Получаем время
set tm=%mia:~10,6%
 
:: Получаем приложение
set app=%mia:~22,5%
 
:: Получаем код возврата
set ret_code=%mia:~28,6%
 
:: Получаем номер устройства
set dev_numb=%mia:~35,2%
 
:: Получаем версию журнала
set jrn_vers=%mia:~38,2%
 
:: Добавляем описания
:: Здесь собственно и затык 
for /f "tokens=1 delims=#" %%A in (DOC.txt) do (
set des=%%A
if /i "%des:~0,5%"=="%app%" (echo %des:~6%)
)
 
 
:: Выводим парсированные данные
echo.
echo %mia%
echo Date                  = %dt:~-2% %dt:~4,2% %dt:~0,-4%
echo Time                  = %tm:~0,-4%h %tm:~2,2%m %tm:~-2%s
echo Application         = %app%  - %des%
echo Return Code       = %ret_code% - %ret_code_des% 
echo Device Number   = %dev_numb%
echo Journal Version   = %jrn_vers%
pause
exit
Добавлено через 1 час 6 минут
Почти работает, выводит нужную строку, но я к сожалению ума не приложу, как вытащить из цикла переменную наружу, чтобы её можно было подставить (добавил нужные комментарии в код).

Windows Batch file
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
Setlocal EnableDelayedExpansion
SetLocal EnableExtensions
 
set mia=
set /p mia="Paste your string: "
 
:: Получаем дату
set dt=%mia:~1,8%
 
:: Получаем время
set tm=%mia:~10,6%
 
:: Получаем приложение
set app=%mia:~22,5%
 
:: Получаем код возврата
set ret_code=%mia:~28,6%
 
:: Получаем номер устройства
set dev_numb=%mia:~35,2%
 
:: Получаем версию журнала
set jrn_vers=%mia:~38,2%
 
for /f "tokens=1 delims=#" %%A in (DOC.txt) do (
set des=%%A
if /i "!des:~0,5!"=="%app%" (
echo !des:~6!
)
)
 
:: Выводим парсированные данные
echo.
echo %mia%
echo Date                  = %dt:~-2% %dt:~4,2% %dt:~0,-4%
echo Time                  = %tm:~0,-4%h %tm:~2,2%m %tm:~-2%s
:: Переменную нужно подставить в эту строку
echo Application         = %app%  - :: Вот сюда
echo Return Code       = %ret_code% - %ret_code_des% 
echo Device Number   = %dev_numb%
echo Journal Version   = %jrn_vers%
pause
exit
Добавлено через 17 минут
В общем нашёл способ, не совсем изящно, зато работает:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
echo.
echo %mia%
echo Date        = %dt:~-2% %dt:~4,2% %dt:~0,-4%
echo Time        = %tm:~0,-4%h %tm:~2,2%m %tm:~-2%s
for /f "tokens=1 delims=#" %%B in (DOC.txt) do (
set des=%%B
if /i "!des:~0,5!"=="%app%" (
echo Application     = %app%  - !des:~6!
)
)
echo Return Code     = %ret_code% - 
echo Device Number   = %dev_numb%
echo Journal Version = %jrn_vers%
Но теперь, другой вопрос:"Как мне встваить в код ответа правильную строку?"
[20141030:103909:0000]APP10:000001:02:86
APP10-Инициализация цикла ожидания событий#000001 Иницоперации#000002 Бла-бла-бла
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2015, 16:23
Ответы с готовыми решениями:

Как добавить пустую строку в txt через батник?
Здравствуйте. Есть такое : if exist "%USB%\acrs" For %%I In (menu.lst) Do...

Как добавить строку в файл через bat-команду?
Доброго времени суток, уважаемые форумчане!!! подскажите пжлста, кто знает,...

Добавить в конец каждого exe-файла случайную строку, сгенерированную из набора символов
Есть сотня папок в которых лежат (RU/EN).exe файлы. Есть необходимость добавить...

Объяснение содержимого bat-файла
Прошу расшифровать(объяснить) содержимое файла. Нанесет ли он какой-нибудь вред...

Распарсить текст
Добрый день, уважаемые форумчане, прошу вашей помощи в решении задачки Нужно...

2
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
17.02.2015, 16:56 2
Лучший ответ Сообщение было отмечено Maret как решение

Решение

Maret, попробуйте заготовку, допилите сами
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
setlocal enabledelayedexpansion
 
for /f "tokens=1-7 delims=[]:" %%a in (DOC.txt) do (
echo %%a
echo %%b
echo %%c
echo %%d
echo %%e
echo %%f
echo %%g
)
pause
1
Maret
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 51
18.02.2015, 09:17  [ТС] 3
sov44 Огромное спасибо, помогло!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2015, 09:17

Необходимо распарсить файл
Привет, помогите пожалуйста распарсить файл. Есть .txt файл: Текст, текст....

Распарсить xml файл
Есть пачка XML В каждом файле есть разные тэги Помогите вытащить данные между...

Распарсить текстовик и переместить файлы
Добрый день, столкнулся с такой проблемой. Есть текстовик, в него внесены имена...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru