Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Maret
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 38
#1

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

17.02.2015, 16:23. Просмотров 430. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Распарсить строку и добавить объяснение (CMD/BAT):

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

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

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

Объяснение содержимого bat-файла - CMD/BAT
Прошу расшифровать(объяснить) содержимое файла. Нанесет ли он какой-нибудь вред пользователю? Что в нем опасного? Потенциально опасный...

Распарсить текст - CMD/BAT
Добрый день, уважаемые форумчане, прошу вашей помощи в решении задачки Нужно получить строки из файла с условиями: 1) если условие 1...

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

2
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
17.02.2015, 16:56 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Сообщений: 38
18.02.2015, 09:17  [ТС] #3
sov44 Огромное спасибо, помогло!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2015, 09:17
Привет! Вот еще темы с ответами:

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

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

Напишите, пожалуйста объяснение к каждой строчке кода. Если можно, и объяснение некоторых функций - C (СИ)
#include <stdlib.h> #include <stdio.h> void random(int * a, int size) { while(size--) *a++ = rand() % 9 + 1; } ...

Распарсить ассоциативный массив и добавить его в БД - PHP БД
Всем привет. Надеюсь на вашу помощь. AJAXом из JavaScript я передаю в php строку JSON, которую декодирую в ассоциативный массив. Который...


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

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

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