Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 10

Как разобрать по частям строку

01.08.2018, 22:00. Показов 5109. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!
Прошу вашей помощи - ситуация такая есть некий файл с данными очень много данных из него нужно получить определенные и на основе этих данных сделать график. Программист забил на данное задание и отказался выводить это в 1С, приходится расхлебывать мне. Я пытаюсь привязать это действие к Zabbix, но знаний в программировании пока не хватает..

начало текстового файла
@
1
781
3136555;22.07.18;10:24:17;100;1;9218;3;3 64;1;0;0;0;
3136556;22.07.18;10:23:37;11;1;9218;3;10 3179;2;63.00;1.000;63.00;
3136557;22.07.18;10:23:40;11;1;9218;3;10 2613;2;11.00;1.000;11.00;
3136558;22.07.18;10:23:45;11;1;9218;3;11 3763;2;57.00;0.380;21.66;
3136559;22.07.18;10:23:50;11;1;9218;3;11 459;2;31.00;0.430;13.33;

конец текстового файла
3139208;22.07.18;21:52:37;75;1;9520;3;2; 2;140.00;0;-21.36;
3139209;22.07.18;21:52:37;40;1;9520;3;;0 ;0;1.000;-140.00;
3139210;22.07.18;21:52:37;55;1;9520;3;;0 ;0;0;-140.00;
3139211;22.07.18;22:39:56;13;1;9521;3;13 584;2;59.00;-1.000;-59.00;
3139212;22.07.18;22:40:00;75;1;9521;3;2; 2;59.00;0;-9.00;
3139213;22.07.18;22:40:00;40;1;9521;3;;0 ;0;1.000;-59.00;
3139214;22.07.18;22:40:00;55;1;9521;3;;0 ;0;0;-59.00;
3139215;22.07.18;22:41:30;61;1;9522;3;36 4;1;43406.26;0;69168.07;


ту строку которую мне надо я получил но проблема в другом как вытащить из этой строки нужные мне данные
данная строка:
3139215;22.07.18;22:41:30;61;1;9522;3;36 4;1;43406.26;0;69168.07;

Заметил что количество ; (данный символ является разделителем данных) одинаковое
Из данной же строки меня интересует дата 22.07.18 и два числовых значения 43406.26 и это 69168.07

Помогите пожалуйста их записать в переменные

Файл формата .txt график я решил вывести в Zabbix так как начал изучать его и сервер уже развернут.
Строчку из данного файла я уже получил

3139215;22.07.18;22:41:30;61;1;9522;3;36 4;1;43406.26;0;69168.07;

заметил 2 постоянности:
1 только в данной строчке ;61; присутствует данное значение
2 ( Является разделителем значений и их всегда одинаковое кол-во в данной строчке

Задача нужно получить из этой строчки 3 отдельных переменных дата 22.07.18 и 2 числовых значения 43406.26 и 69168.07

Вот как я получаю данную строчку


Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "infile=E:\TestZabbix\123.txt"
set "words=;61;"
 
for /f "usebackq  delims=" %%i in (`find /n /v "" %infile% ^| find "%words%"`) do (set str=%%i)
for /f "delims=[[]] tokens=2" %%i in ("%str%") do (set wrd=%%i) 
 
echo %wrd%
 
pause
Заранее спасибо!

Да забыл указать данные могут меняться кроме ;61;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2018, 22:00
Ответы с готовыми решениями:

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

Как разобрать документ по частям?
Здравствуйте, помогите пожалуйста. У меня есть прайс. Мне нужно все подзаголовки удалить, такие как :"(GSt) Семечки черные",...

Как считывать большую строку по частям?
Как считывать большую строку по частям?

6
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
01.08.2018, 23:28
Цитата Сообщение от maks_kelevra Посмотреть сообщение
данная строка:
3139215;22.07.18;22:41:30;61;1;9522;3;36 4;1;43406.26;0;69168.07;
всегда ли:
1;2(нужно);3;4(61);5;6;7;8;9;10(нужно);1 1;12(нужно);
или хотя бы всегда 2(нужно) на втором месте, а 10(нужно) и 12(нужно) последние независимо от количества остальных данных и разделены между собой одним элементом?
0
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 10
02.08.2018, 06:47  [ТС]
Да кол-во блоков разделенных ; всегда одинаковое только числовые значения этих блоков могут меняться.

пример
3139215;22.07.18;22:41:30;61;1;9522;3;36 4;1;43406.26;0;69168.07;
вот еще одна
245668;01.06.17;23:00:30;61;2;499;3;167; 1;8349.56;0;93478.03;
Блоков столько же но длинна блоков изменилась
0
6966 / 2860 / 1100
Регистрация: 06.06.2017
Сообщений: 9,700
02.08.2018, 07:17
Лучший ответ Сообщение было отмечено maks_kelevra как решение

Решение

Windows Batch file
1
2
3
4
5
@echo off
set var=3139215;22.07.18;22:41:30;61;1;9522;3;364;1;43406.26;0;69168.07;
for /f "tokens=2,10,12 delims=;" %%i in ('echo."%var%"') do set d=%%i & set n=%%j & set m=%%k
echo %d% %n% %m%
pause
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 10
02.08.2018, 07:57  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Windows Batch file
1
2
3
4
5
@echo off
set var=3139215;22.07.18;22:41:30;61;1;9522;3;364;1;43406.26;0;69168.07;
for /f "tokens=2,10,12 delims=;" %%i in ('echo."%var%"') do set d=%%i & set n=%%j & set m=%%k
echo %d% %n% %m%
pause
Спасибо огромное только не совсем понял понял строчку
for /f "tokens=2,10,12 delims=;" %%i in ('echo."%var%"') do set d=%%i & set n=%%j & set m=%%k
"tokens=2,10,12 delims=;" - выбор блоков 2,10,12 с разделителем ; (Это понятно поправьте если не прав)
%%i in ('echo."%var%"') do set d=%%i & set n=%%j & set m=%%k - Присвоить значения блоков начиная с буквы i записать в переменные (по порядку алфавита)?
0
6966 / 2860 / 1100
Регистрация: 06.06.2017
Сообщений: 9,700
02.08.2018, 08:54
maks_kelevra, почти. Только i, j, k — это переменные для заданных номерами подстрок.
for /? из консоли выполните, там всё расписано. Либо см. здесь.
0
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 10
02.08.2018, 20:11  [ТС]
Спасибо еще раз огромное. Я понял про эти переменные просто не так выразился поскольку не программист с терминами очень плохо но вроде общее понимание имеется..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2018, 20:11
Помогаю со студенческими работами здесь

Как разобрать строку
Здравствуйте. Мне нужно разобрать строки, получить переменные. Однако разделителей несколько (переменные имеют иерархическую...

Как разобрать строку?
Text = "Liverpool\r\nMan Utd\r\n12:30 72\r\n4/5 1/1" помогите pls

Как разобрать строку
Имеется строка как можно из неё вырезать число и занестви в переменную? Число может быть любой длинны.

Как правильно разобрать строку на C++?
В программе#include <iostream> #include <string> #include <vector> #include <stdlib.h> #include <stdio.h> using namespace std;...

Как разобрать строку с номером телефона?
Привет! Есть номера телеофнов в произвольном виде. то есть они забиты так 8 (982) 900-210-87 - Люся +7982928502845 (рабочий) ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru