|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разбивка файла с делителем |
|
CMD/BAT - Разбивка файла с делителем
|
Новый участник Сообщения: 3 |
Приветствую. Очень нужна помощь с написанием bat файла. Есть исходный файл с расширением file.anc в котором присутствует код. Код разделен делителем %. Собственно нужно разделить весь код на отдельные файлы с кодом с таким же расширением.
пример file.anc % N20 G90 G49 N30 G40 G80 N40 G54 N50 M5 N60 M7 % % N20 G90 G49 N30 G40 G80 N40 G54 % % N40 G54 N50 M5 N60 M7 % нужно что бы получились файлы file1.anc с кодом % N20 G90 G49 N30 G40 G80 N40 G54 N50 M5 N60 M7 % file2.anc с кодом % N20 G90 G49 N30 G40 G80 N40 G54 % file3.anc с кодом % N40 G54 N50 M5 N60 M7 % и т.д |
|
Отправлено: 13:01, 19-05-2023 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:21, 19-05-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Я в принципе нашел решение данного вопроса на форуме но батник не работает с символом %. Приходится через нотепад заменять % на # и уже тогда все начинает работать. Но хочется исключить нотепад из цепочки.
Использовал несколько готовых решений. Я далек от этой темы если честно. ren *.anc *.txt @echo off set "f=file.txt" setlocal enabledelayedexpansion <"%f%" (for /f "delims=" %%a in ('find /v ""') do @echo %%a|>nul find "#" && (set /a n+=1& rem:>"f!n!.txt") || (if exist "f!n!.txt" >>"f!n!.txt" echo:%%a)) endlocal del /f /s /q file.txt,f2.txt,f4.txt,f6.txt,f8.txt,f10.txt,f12.txt,f14.txt,f16.txt,f18.txt, setlocal enabledelayedexpansion set "count=1001" set a="*.txt" for /f "usebackq delims=*" %%f in (`dir /b /o:-d %a%`) do (ren "%%f" list-!count:~1!.anc set /a count+=1 ) pause>nul |
Отправлено: 14:30, 19-05-2023 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off &Cls Set "FileIn=Z:\Box_In\file.anc" Set "BoxOut=Z:\Box_Out" Set /A N=0, M=0 For /F "usebackq delims=" %%i In (`2^>nul More "%FileIn%"`) Do Call :Out "%FileIn%" "%%i" Pause Exit /B :Out If %2=="" If %N% EQU 0 (Set /A M+=1, N=1 &Exit /B) Else (Set /A N=0 &Exit /B) If %N% EQU 1 2>nul Del "%BoxOut%\%~n1%M%%~x1" Set /A N+=1 >>"%BoxOut%\%~n1%M%%~x1" Echo %~2 Exit /B Вариант с лидирующими нулями в номере файла
@Echo Off &Cls Set "FileIn=Z:\Box_In\file.anc" Set "BoxOut=Z:\Box_Out" Set /A N=0, M=1000 For /F "usebackq delims=" %%i In (`2^>nul More "%FileIn%"`) Do Call :Out "%FileIn%" "%%i" Pause Exit /B :Out If %2=="" If %N% EQU 0 (Set /A M+=1, N=1 &Exit /B) Else (Set /A N=0 &Exit /B) If %N% EQU 1 2>nul Del "%BoxOut%\%~n1%M:~-3%%~x1" Set /A N+=1 >>"%BoxOut%\%~n1%M:~-3%%~x1" Echo %~2 Exit /B |
------- Последний раз редактировалось megaloman, 19-05-2023 в 17:29. Отправлено: 17:22, 19-05-2023 | #4 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Powershell
$inputFile = 'C:\temp\file.anc' $outputFolder = 'C:\temp' $enc = @{ Encoding = 'default' } $c = 1 gc $inputFile |% { $outputFile = "$outputFolder\file$($c).anc" if ($_ -eq '%') { if ($writing) { $writing = $false "%" |Out-File $outputFile @enc -Append $c++ } else { $writing = $true "%" |Out-File $outputFile @enc } } else { $_ |Out-File $outputFile @enc -Append } } |
|
------- Последний раз редактировалось DJ Mogarych, 19-05-2023 в 19:40. Причина: идемпотентность, хэш-таблица для кодировки Отправлено: 17:34, 19-05-2023 | #5 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:01, 20-05-2023 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать всем огромное спасибо. Все работает
|
Отправлено: 22:02, 20-05-2023 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Разбивка строк общего файла на отдельные csv файлы | jordan_74 | Программирование и базы данных | 64 | 22-11-2018 08:50 | |
CMD/BAT - [решено] Разбивка текстового файла файла | Seryoga204 | Скриптовые языки администрирования Windows | 1 | 04-10-2010 21:19 | |
Установка - Разбивка файла .gho на куски | Pavelnt | Microsoft Windows 2000/XP | 2 | 15-05-2009 12:15 | |
HDD - Разбивка диска | andvict73 | Накопители (SSD, HDD, USB Flash) | 9 | 20-03-2009 00:20 | |
Разбивка дисков | Neto | Хочу все знать | 2 | 22-11-2003 16:01 |
|