Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Разбите текстового файла на отдельные файлы по определенному условию

Ответить
Настройки темы
Любой язык - Разбите текстового файла на отдельные файлы по определенному условию

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Artas28
Дата: 04-04-2019
Здравствуйте. Нужна помощь. Есть список программ, скаченных с ЧПУ станка одним файлом. Необходимо этот файл разделить на отдельные файлы, например по началу программы ("O").
Т.е. если в программе присутствует O, то он должен от неё и до другого O, вырезать эту часть текста и создать новый документ с этим текстом.


Пример:

Скрытый текст

O0009(Bolt M14x1_6GRANNIK)
(ROMB)
T1M3S2700G99
G0X18.Z5.
G01Z0.2F0.1
X-1.
Z2.
G0X12.
G1Z-1.7F0.14
X12.3
Z1.
X10.
Z-1.3
X10.3
Z1.
X8.
........
T8
G0X0
Z0
M05
G4X0.5
M99
O0021
M70
M00
M71
M30

O0004(KR M18*1.5 L25.5)
(ROMB)
T1M3S3500G99
G0Z3.0M8
X3.
G1Z0.F0.1
X18.Z-3.6F0.25
Z-20.3
G0X19.Z-3.73
G1X18.
X-0.2Z0.F0.15
G0Z25.
.......

Отправлено: 14:27, 04-04-2019

 
mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


Цитата Artas28:
G4X0.5
M99
O0021
M70 »
— по этому О тоже должно резать?

-------
Mikhail Zhilin


Отправлено: 15:30, 04-04-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата mwz:
— по этому О тоже должно резать? »
Да.

Отправлено: 15:40, 04-04-2019 | #3


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In\infile.txt"
	Set "BoxOut=Z:\Box_Out"
	Set "Delim=O"

	Set "OutFile=Err.txt"
	FOR /F "usebackq delims=" %%i IN ("%BoxIn%") DO Call :Out "%BoxOut%" "%%i"
pause
Exit /B 0

:Out
	Set "Str=%~2"
	If "%Str:~0,1%"=="%Delim%" FOR /F "delims=(" %%j IN ("%Str%") DO (
		Set "OutFile=%%j"
		2>nul Del "%~1\%%j"
	)
	>>"%~1\%OutFile%" Echo %~2
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:23, 04-04-2019 | #4


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата Artas28:
Т.е. если в программе присутствует O, то он должен от неё и до другого O, вырезать эту часть текста и создать новый документ с этим текстом. »
powershell
Код: Выделить весь код
gc test.txt|%{$i=0;$name="$i"+'.txt'}{if($_ -match '^O'){$i++;$name = "$i"+'.txt'};$_|ac $name}

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:07, 04-04-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


PowerShell, токмо через split:
Код: Выделить весь код
# gc test.txt|%{$i=0;$name="$i"+'.txt'}{if($_ -match '^O'){$i++;$name = "$i"+'.txt'};$_|ac $name}
(Get-Content -Path 'C:\Мои проекты\0257\Source.txt' -Raw) -split "`r`nO" |`
    ForEach-Object -Begin {
        $i = 0
    } -Process {
        $i++
        Set-Content -Path "C:\Мои проекты\0257\Dest_$i.txt" -Value $('O' + $_)
    }
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:48, 05-04-2019 | #6


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо!

Последний раз редактировалось Artas28, 05-04-2019 в 08:53.


Отправлено: 08:43, 05-04-2019 | #7


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


А реально сделать, что бы он файл называл не 1 или dest_1 а по названию программы в файле, если он вырезал O0003 то и файл будет называться 0003 или 3 или О0003 ?
Хотя и так отлично работает)

Отправлено: 09:06, 05-04-2019 | #8


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
вроде бы у меня сделано именно так! »
А через какую программу запускать этот код?
в PowerShell работать будет?

Отправлено: 12:57, 05-04-2019 | #9


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Artas28,
Цитата:
А реально сделать, что бы он файл называл не 1 или dest_1 а по названию программы в файле, если он вырезал O0003 то и файл будет называться 0003 или 3 или О0003 ?
вроде бы у меня сделано именно так!
Цитата Artas28:
А через какую программу запускать этот код? »
Сохранить код в файл с расширением .bat и запускать как любой другой исполнимый файл. Естественно, вместо моих путей прописать Ваши реальные

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:39, 05-04-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Разбите текстового файла на отдельные файлы по определенному условию

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Разбивка строк общего файла на отдельные csv файлы jordan_74 Программирование и базы данных 64 22-11-2018 08:50
CMD/BAT - Скопировать файлы из папок по определенному названию JKop Скриптовые языки администрирования Windows 19 28-10-2016 21:43
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла icomboy Скриптовые языки администрирования Windows 0 10-09-2013 15:17
CMD/BAT - [решено] Копирование файла по условию его содержимого XSubZero Скриптовые языки администрирования Windows 3 16-05-2012 17:13
VBA - [решено] Разбор листа Excel по строкам в отдельные файлы Debugger Программирование и базы данных 3 14-03-2012 15:46




 
Переход