|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] xml одной строкой и весом 70mb разбить по файлам |
|
CMD/BAT - [решено] xml одной строкой и весом 70mb разбить по файлам
|
Новый участник Сообщения: 10 |
Здравствуйте, имеется огромный однострочный xml с которым невозможно работать!
Нужен умный кот, который сможет распинать этот xml на файлы по сегментам <conceptGrp>.....</conceptGrp> желательно в папку рядом с файлом и чтоб на выходе были названия файлов вида 00001 - 25000 в общей сложности выйдет около 24тыс файлов. И пожалуйста вариант как обратно склеить в одну строку все 25тыс файлов. |
|
Отправлено: 13:21, 24-08-2016 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Умный кот?
![]() Я так понимаю каждый кусок <conceptGrp>.....</conceptGrp> должен быть в отдельном файле? Между <conceptGrp>.....</conceptGrp> и <conceptGrp>.....</conceptGrp> постоянно ничего нету или могут быть какие-то символы? |
Отправлено: 13:49, 24-08-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Elven,
Цитата Elven:
Цитата Elven:
|
||
Отправлено: 13:56, 24-08-2016 | #3 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Может для читабельности просто заменить в notepad++
это "><", на это ">\r\n<" (предварительно включив режим поиска "расширеный") или "</conceptGrp><conceptGrp>" на это "</conceptGrp>\r\n<conceptGrp>"? После чего можно разбить основной файл построчно (все теги, или <conceptGrp> как удобно) батником со следующим содержимым: @Echo Off SetLocal enabledelayedexpansion :: Имя исходного текстового файла Set list=list.xml :: Число строк в файле на выходе Set str=4 Set Num=%str%& Set File=0 For /F "tokens=* usebackq delims=" %%i In ("%list%") Do ( Set /a Num+=1 If !Num! GEQ %str% ( Set Num=0 Set /a File+=1 Set nFile=0!File! Set nFile=!nFile:~-2! :: Название частей текстового файла на выходе("list" можно заменить на любое) Echo %%i>list!nFile!.xml ) Else Echo %%i>>list!nFile!.xml ) Pause Exit ![]() Цитата:
|
|
Последний раз редактировалось gremlintv2, 24-08-2016 в 16:59. Отправлено: 16:08, 24-08-2016 | #4 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать gremlintv2, да, было б хорошо разнести на строки и разделить этим бат файлом
conceptGrp.bat
@echo off SetLocal EnableExtensions EnableDelayedExpansion Set src=in.xml MD out Set C=0 For /F "tokens=1 delims=[]" %%? in (';find /i /n "<conceptGrp>" ^< "%src%"') do set /A C+=1& set ArrFrom.!C!=%%? Set C=0 For /F "tokens=1 delims=[]" %%? in ('find /i /n "</conceptGrp>" ^< "%src%"') do set /A C+=1& set ArrUntil.!C!=%%? For /L %%? in (1,1,%C%) do call :CutLines "!ArrFrom.%%?!" "!ArrUntil.%%?!" "%src%" "out/%%?.xml" pause Exit /B :CutLines [From] [Until] [SourceFile] [DestinationFile] SetLocal For /L %%C in (%~1, 1, %~2) do set "txtmask=!txtmask!\[%%C\] " (for /f "tokens=1* delims=]" %%a in ('find /v /n "" ^<"%~3"^| findstr /B "%txtmask%" 2^>nul') do Echo=%%b)> "%~4" EndLocal& Exit /B И увы notepad++ "Не отвечает" |
|
Отправлено: 16:35, 24-08-2016 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blither:
|
|
Отправлено: 17:00, 24-08-2016 | #6 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Цитата:
![]() Сейчас чисто из интереса запустил замену перевода строки на теги в словаре весом 200Мб. Так как гиговый словарь notepad++ отказался открывать. =( |
|
Последний раз редактировалось gremlintv2, 24-08-2016 в 17:39. Отправлено: 17:33, 24-08-2016 | #7 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Iska, стоит задача перевести этот xml, для последующего использования в качестве базы терминов, а файл слишком велик для перевода.
В этом и необходимость его резать - клеить. gremlintv2, Iska, Ок. дождусь вечера и пусть notepad++ пилит его на строки до самого утра, и уж завтра ночью делить его на файлы, до самого утра )))) Спасибо! |
Отправлено: 17:34, 24-08-2016 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blither:
![]() |
|
Отправлено: 21:10, 24-08-2016 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Разбить txt файл по строкам и файлам | Acred | Скриптовые языки администрирования Windows | 9 | 12-10-2015 18:08 | |
[решено] Разбить данные одной строки по полям формы | support23 | AutoIt | 5 | 19-09-2012 15:18 | |
CMD/BAT - [решено] удаление схожих файлов одной строкой? | super_bitard | Скриптовые языки администрирования Windows | 3 | 17-02-2011 07:32 | |
Разное - Значение в реестре одной строкой | MKN | Microsoft Windows 2000/XP | 7 | 26-11-2010 08:51 | |
Авторизация к прокси одной строкой | Parsibor | Сетевые технологии | 2 | 20-08-2004 15:23 |
|