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

Шинковка *.TXT файла с последующим переименованием из текста

01.07.2023, 08:59. Показов 739. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем! вопрос такой у меня есть куча текстовых файлов (логов) с внутреней структурой
Кликните здесь для просмотра всего текста

Код
[Note] ...., path: Logs.... (depth: 5)

10.12.2020.18.13.33
тут  текст
[Note] ...., path: Logs.... (depth: 5)

11.12.2020.18.13.33
и тут  текст

и у меня есть батник с помощью которого я режу 1 файл размером пару сотен метров на куски и переименовываю их выглядит он так
Кликните здесь для просмотра всего текста
Код
@echo off
REM тут имя файла
set "f=00.txt"
REM triger по которому срабатывает нарезка с удалением пробелов так чтобы имя в файле было первой строкой
set "m=[Note]"


REM команда нарезать 
setlocal enabledelayedexpansion
 <"%f%" (for /f "delims=" %%a in ('find /v ""') do @echo %%a|>nul find "%m%" && (set /a n+=1& rem:>"f!n!.txt") || (if exist "f!n!.txt" >>"f!n!.txt" echo:%%a))

 
 REM команда переименовать
 
for /f "delims=" %%a in ('dir /b *.txt') do ( call :1 "%%a" )
exit 
:1
chcp 1251 >nul
for /f "usebackq delims=" %%b in (%1) do (
set n=0
set /a n+=1
if !n!==1 (>nul chcp 866 & echo %%b & ren %1 "%%b.txt"  & exit /b)
)

endlocal

pause>nul


так вот вопрос банник работает но не совсем корректно выполнение происходит через 2 команды и созданные файлы переименоваются 2 раза (1 раз при создании и 2 раз при извлечении имени из первой строки в этом файле) - помогите объединить эти 2 команды в одну при том чтобы как и в первой команде дописывалось цифра если имена файлов совпадают.
Заранее благодарю за ваше внимание.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2023, 08:59
Ответы с готовыми решениями:

Анализ содержимого .docx с последующим его переименованием
Доброго времени суток! Кратко о проблеме: после неудачной переустановки ОС были удалены важные...

Нужен скрипт для копирования каталогов, содержащих текущую дату, с последующим переименованием
Добрый день. Прочитал кучу постов но внятного решения найти не смог. Поставили задачу ежедневно...

Как сделать перенос из отдного txt файла текста в другой txt файл в Turbo C?
Надо сделать с потоками. fopen fgets fputs - с этими функциями

Добавление текста из txt файла в середину другого текстового файла
Здравствуйте. есть txt-файл с данными, &quot;calibration_E.txt&quot;. Необходимо циклом в другие выбранные...

Файл: Переписать текст в t3.txt сначала из файла t1.txt, а потом из файла t2.txt
1) Переписать текст в t3.txt сначала с файла t1.txt, а потом с файла t2.txt 2) Файл t2.txt...

17
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 09:17 2
Цитата Сообщение от gipperpank Посмотреть сообщение
так вот вопрос банник работает
без банных принадлежностей, можно просто показать образец обрабатываемого файла
и показать, что должно быть на выходе после обработки ?
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 09:25  [ТС] 3
батник работает но при выполнении второй команды если имя совпадает он просто пропускает переименование файла
на выходе получается файл с текстом без метки [Note] ...., path: Logs.... (depth: 5)
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 09:30 4
работает, но не работает.
понимаю.
а если ответить всё-таки на вопрос 'можно просто показать образец обрабатываемого файла ?'
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 09:49  [ТС] 5
Desktop.zip
обрезал чтоб не грузить кучу ненужных строк
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 10:34 6
фантастика.
а теперь 2-я часть вопроса:
имея перед глазами этот образец,
что должно быть на выходе после обработки ?
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 10:50  [ТС] 7
ещё раз проверил на выходе создаётся 3 файла (файл 0.txt, файл 1.txt и файл с мусором который не столь важен)
не понимаю суть вопроса
при выполнении первой команды файл режется на части (части переименовываются в f1, f2, f3, f4 и так далее до 10000)
далее выполняется вторая команда которая считывает первую строку и записывает её как имя но если имя совпакает с именем файла в директории то файл не переименовывается

я добавил файл примера и то что получается на выходе
Desktop.zip
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 11:54 8
Цитата Сообщение от gipperpank Посмотреть сообщение
не понимаю суть вопроса
передо мной фрагмент файла для обработки ( то, что ты прислал в зипе ):

1C
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
01, path: log\ 0-9\00\01 (depth: 4)
 
 
[Note]  path: log\ 0-9\00\01\ 21 30.06.2023
 
файл 0
 
30.06.2023 14:19:41  = Запущено ведение протокола логики опроса для контроллеров серии EK-TC =
30.06.2023 14:20:20Начало сеанса => прибор:EK000001
30.06.2023 14:20:20Начало сеанса => прибор:EK000002
30.06.2023 14:20:20Начало сеанса => прибор:EK000003
30.06.2023 14:20:20Начало сеанса => прибор:EK000004
30.06.2023 14:20:20Начало сеанса => прибор:EK000005
30.06.2023 14:20:20Начало сеанса => прибор:EK000006
30.06.2023 14:20:20<=OK (1) от прибора:EK000005)
30.06.2023 14:20:20<=OK (1) от прибора:EK000004)
30.06.2023 14:20:21<=OK (1) от прибора:EK000003)
30.06.2023 14:20:21<=OK (1) от прибора:EK000006)
30.06.2023 14:20:21<=OK (1) от прибора:EK000002)
30.06.2023 14:20:22<=OK (1) от прибора:EK000001)
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000001
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000002
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000003
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000004
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000005
30.06.2023 14:20:22Подтверждение скорости обмена => прибор:EK000006
30.06.2023 14:20:22<=OK (2) от прибора:EK000005)
30.06.2023 14:20:23<=OK (2) от прибора:EK000003)
30.06.2023 14:20:23<=OK (2) от прибора:EK000006)
30.06.2023 14:20:23<=OK (2) от прибора:EK000002)
30.06.2023 14:20:23<=OK (2) от прибора:EK000001)
30.06.2023 14:20:24<=OK (2) от прибора:EK000004)
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000001
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000002
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000003
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000004
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000005
30.06.2023 14:20:24Проверка замка поставщика => прибор:EK000006
30.06.2023 14:20:24<=OK (3) от прибора:EK000003)
30.06.2023 14:20:24<=OK (3) от прибора:EK000005)
30.06.2023 14:20:25<=OK (3) от прибора:EK000004)
30.06.2023 14:20:25<=OK (3) от прибора:EK000002)
30.06.2023 14:20:25<=OK (3) от прибора:EK000001)
30.06.2023 14:20:26<=OK (3) от прибора:EK000006)
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000001
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000002
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000003
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000004
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000005
30.06.2023 14:20:26Запрос оперативного параметра (0) => прибор:EK000006
30.06.2023 14:20:26<=OK (5) от прибора:EK000003)Result=17506944.2512 info_var=17506944.2512
30.06.2023 14:20:26<=OK (5) от прибора:EK000005)Result=663490.7744 info_var=663490.7744
30.06.2023 14:20:26<=OK (5) от прибора:EK000006)Result=1933785.4728 info_var=1933785.4728
30.06.2023 14:20:27<=OK (5) от прибора:EK000004)Result=26198.7756 info_var=26198.7756
30.06.2023 14:20:27<=OK (5) от прибора:EK000002)Result=3222408.1702 info_var=3222408.1702
30.06.2023 14:20:27<=OK (5) от прибора:EK000001)Result=25200834.2398 info_var=25200834.2398
 
[Note]  path: log\ 0-9\00\01\ 21 30.06.2023
 
файл 1
 
30.06.2023 19:27:20Запрос оперативного параметра (13) => прибор:EK000003
30.06.2023 19:27:20Запрос оперативного параметра (13) => прибор:EK000004
30.06.2023 19:27:20Запрос оперативного параметра (22) => прибор:EK000005
30.06.2023 19:27:20Запрос оперативного параметра (7) => прибор:EK000006
30.06.2023 19:27:20<=OK (5) от прибора:EK000005)Result=0 info_var=0
30.06.2023 19:27:21<=OK (7) от прибора:EK000003)
30.06.2023 19:27:21<=OK (7) от прибора:EK000004)
30.06.2023 19:27:21<=OK (5) от прибора:EK000001)Result=14 info_var=14
30.06.2023 19:27:22<=OK (6) от прибора:EK000002)
30.06.2023 19:27:22<=OK (5) от прибора:EK000006)Result=3 info_var=3
30.06.2023 19:27:22Запрос строки суточного архива  => прибор:EK000001
30.06.2023 19:27:22(временная метка архива:30.06.2023 19:26:56
30.06.2023 19:27:22Запрос строки суточного архива  => прибор:EK000002
30.06.2023 19:27:22(временная метка архива:30.06.2023 19:27:02
30.06.2023 19:27:22Запрос строки суточного архива  => прибор:EK000003
30.06.2023 19:27:22(временная метка архива:30.06.2023 19:26:56
30.06.2023 19:27:22Запрос строки суточного архива  => прибор:EK000004
30.06.2023 19:27:22(временная метка архива:30.06.2023 19:26:55
30.06.2023 19:27:22Запрос строки интервального архива  => прибор:EK000005
30.06.2023 19:27:22(временная метка архива:10.06.2023 17:00:02
30.06.2023 19:27:22Запрос строки суточного архива  => прибор:EK000006
30.06.2023 19:27:22(временная метка архива:30.06.2023 19:26:56
30.06.2023 19:27:22<=старт извлечения данных архивной строки от прибора:EK000005)
30.06.2023 19:27:22размещение для интервального архива от прибора:EK000005)
30.06.2023 19:27:22на 10.06.2023 18:00:00  от прибора:EK000005)
30.06.2023 19:27:22<=OK (10) от прибора:EK000005)
30.06.2023 19:27:22<= Данные интервального архива считаны с прибора:EK000005
30.06.2023 19:27:23Запрос оперативного параметра (23) => прибор:EK000005
30.06.2023 19:27:23<=OK (5) от прибора:EK000005)Result=0004 info_var=4
30.06.2023 19:27:23<=старт извлечения данных архивной строки от прибора:EK000004)
30.06.2023 19:27:23размещение для суточного архива от прибора:EK000004)
30.06.2023 19:27:23<=ERROR (23) от прибора:EK000004)
30.06.2023 19:27:24<=старт извлечения данных архивной строки от прибора:EK000003)
30.06.2023 19:27:24размещение для суточного архива от прибора:EK000003)
30.06.2023 19:27:24<=ERROR (23) от прибора:EK000003)
30.06.2023 19:27:24<=старт извлечения данных архивной строки от прибора:EK000001)
30.06.2023 19:27:24размещение для суточного архива от прибора:EK000001)
30.06.2023 19:27:24<=ERROR (23) от прибора:EK000001)
30.06.2023 19:27:24<=старт извлечения данных архивной строки от прибора:EK000006)
30.06.2023 19:27:24размещение для суточного архива от прибора:EK000006)
30.06.2023 19:27:24<=ERROR (23) от прибора:EK000006)
30.06.2023 19:27:25<=старт извлечения данных архивной строки от прибора:EK000002)
30.06.2023 19:27:25размещение для суточного архива от прибора:EK000002)
30.06.2023 19:27:25<=ERROR (23) от прибора:EK000002)
30.06.2023 19:27:25Запрос оперативного параметра (20) => прибор:EK000001
30.06.2023 19:27:25Запрос оперативного параметра (7) => прибор:EK000002
30.06.2023 19:27:25Запрос оперативного параметра (14) => прибор:EK000003
30.06.2023 19:27:25Запрос оперативного параметра (14) => прибор:EK000004
30.06.2023 19:27:25Запрос строки интервального архива  => прибор:EK000005
30.06.2023 19:27:25(временная метка архива:10.06.2023 16:00:02
30.06.2023 19:27:25Запрос оперативного параметра (8) => прибор:EK000006
30.06.2023 19:27:25<=OK (5) от прибора:EK000003)Result=4.5 info_var=4.5
30.06.2023 19:27:25<=OK (5) от прибора:EK000004)Result=1.02883 info_var=1.02883
30.06.2023 19:27:26<=OK (5) от прибора:EK000001)Result=14 info_var=14
30.06.2023 19:27:26<=OK (5) от прибора:EK000006)Result=1 info_var=1
30.06.2023 19:27:26<=OK (5) от прибора:EK000002)Result=3 info_var=3
30.06.2023 19:27:27<=старт извлечения данных архивной строки от прибора:EK000005)
как будет выглядеть то, что из него надо получить ?
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 12:09  [ТС] 9
во втором файле Desktop.zip файлы вывода тоже приложены (это именно файлы после обработки батником я их не правил)
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 12:52 10
э-э...
может я оскорблю тебя в твоих лучших чувствах,
а зачем их резать ?

хороший монотонно-последовательный лог, поле с timestamp,
приборы там, панимаш, и Result, и info_var,
а ты его резать. Зачем ?
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 12:56 11
не дожидаясь перитонитов ?
Шинковка *.TXT файла с последующим переименованием из текста
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 13:02  [ТС] 12
программа пишет лог 24/7 дописывая в лог файл инфу останавливать программу крайне нежелательно из за этого лог файл разрастается больше 200 метров в сутки а при помехах на линии ещё больше для анализа открывать такие большие файлы очень долго проще порезать их
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 13:43 13
заливай в sqlite;
200 Мб в сутки - это 6 Гб в месяц; приемлемо. если без индекса.
в конце месяца подрезать, оставить только последние 10 дней ( или какая там политика )

запрос на анализ - ну, 0.5 секунды

Добавлено через 3 минуты
использование пользовательского интерфейса работы с файловой системы в качестве инструмента анализа/обработки данных
- это страшный грех, по сравнению с которым прелюбодеяние с козой Нюркой покажется детской шалостью.
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
01.07.2023, 13:43  [ТС] 14
ты лучше подскажи как реализовать всё в одной команде переименовывая файл на стадии деления
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
01.07.2023, 13:55 15
Цитата Сообщение от gipperpank Посмотреть сообщение
лучше
нет. это не лучше.

для меня это предложение звучит как: "Ну что ты мне всё про гуманность, лучше подскажи, как украсть 3-х младенцев из роддома и продать на органы?"

Добавлено через 4 минуты
да и не будет там 6Гб, получится база не больше 1Гб, да ещё и с индексом.
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
03.07.2023, 09:10  [ТС] 16
тогда какой смысл был флудить в теме если Вы так и так помогать не собирались
0
6244 / 2121 / 335
Регистрация: 10.12.2013
Сообщений: 7,331
03.07.2023, 13:56 17
gipperpank,
дорогой друг,
у меня нет желания помогать кому-либо
делать гадкие и стыдные вещи.

можно нашинковать файл на 2n кусков
и переименовать их самым причудливым образом,
но это никак не поможет тому, ради чего всe эти IT-технологии
нужны, а именно - увеличению производительности труда
и надлежащему хранению информации. причем это взаимосвязанные понятия.

Ценность какого-либо файла с данными заключается в том, что находится
внутри него, а не в том, как именно этот файл называется.

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

да, командный интерпретатор cmd.exe со своими немногочисленными друзьями в виде корявых консольных утилит времен прошлого века, которыми добрый дядя Уильям снабдил ОС Windows, не предоставляет никаких инструментов для увеличения производительности труда и правильного хранения информации, но большой беды в этом нет, поскольку все ( ну, почти все ) хорошие инструменты и целевые программы можно доустановить в эту ОС и с успехом пользоваться.

Так вот. Возвращаясь не к теме, а к сути проблемы.
Тебе надо разобрать строки, оставить только те события в логе, какие могут понадобиться
и залить их в БД относительно осмысленным образом.
После чего можно будет пользоваться этой БД, поскольку инструментов для работы с ней для анализа и обработки данных более чем достаточно.

маленькой утилиты sqlite3.exe из состава однопользовательской БД Sqlite тут хватит за глаза.

Вся сложность на тек. момент в разборе строк лога, а именно какие именно поля вычленить из строки, выбросив остальное,
без потери смысла - читай информации, чтобы потом не было мучительно больно.

инструменты для разбора - скриптовые языки: powershell* / perl / python / ruby / vbscript*. Или даже C#*, хоть это и не скрипт язык. зато он есть на борту.
( помеченные * есть уже в составе Windows )

поэтому есть смысл, как мне кажется, переместиться в любой раздел, посвящённой данным инструментам

PS: твой хамский пассаж про 'флуд' оставляю без комментария.
( и да, я минут 30 рассматривал предоставленный тобой после неоднократных запросов кусок лога прежде чем написать то, что написал выше )
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 11
04.07.2023, 06:52  [ТС] 18
Мой хамский пассаж Вы так и не поняли, я просил помощи а не дискуссию о важности данных, я предоставил свой вариант пусть даже не совсем корректно работающий, а от Вас кроме кучи вопросов как таково ничего не последовало, возвращаясь к вашему предыдущему сообщению я в курсе что есть более удобные скриптовые языки но политика места моей работы не позволяет использовать ничего.

У меня нет настроения и времени общаться с Вами, решение было найдено, файлы обрабатываются автоматом, теперь это не моя морока а диспетчеров я этого более не касаюсь, тема закрыта.
0
04.07.2023, 06:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2023, 06:52
Помогаю со студенческими работами здесь

Удаление текста из txt файла
В файле your_keys.txt находятся ключи. Пример: KEY1 KEY2 KEY3 KEY4 KEY5 А мне надо...

Считывание текста с файла .txt
Как считать со строки сначала текст, а потом числа? Например: Triangle x1 y1 x2 y2 x3 y3 где...

Чтение текста из .txt файла
Здравствуйте, вывожу текст в EDIT из .txt файла таким способом: DWORD R; HANDLE FileHandle;...

Вывод текста из файла .txt
Всем привет! У меня есть сайт, состоит из трёх страниц. Есть текстовый документ 1_1.txt. По...

Чтение текста их txt файла
Здравствуйте. Как сделать создание и чтение текста из txt файла? И в чем разница между print и...


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

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