Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] xml одной строкой и весом 70mb разбить по файлам

Ответить
Настройки темы
CMD/BAT - [решено] xml одной строкой и весом 70mb разбить по файлам

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


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

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


Изменения
Автор: blither
Дата: 24-08-2016
Здравствуйте, имеется огромный однострочный xml с которым невозможно работать!
Нужен умный кот, который сможет распинать этот xml на файлы по сегментам <conceptGrp>.....</conceptGrp>
желательно в папку рядом с файлом и чтоб на выходе были названия файлов вида 00001 - 25000 в общей сложности выйдет около 24тыс файлов.
И пожалуйста вариант как обратно склеить в одну строку все 25тыс файлов.

Отправлено: 13:21, 24-08-2016

 

Аватара для Elven

Ветеран


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

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


Умный кот?

Я так понимаю каждый кусок <conceptGrp>.....</conceptGrp> должен быть в отдельном файле? Между <conceptGrp>.....</conceptGrp> и <conceptGrp>.....</conceptGrp> постоянно ничего нету или могут быть какие-то символы?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 24-08-2016 | #2



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

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


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


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

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


Elven,
Цитата Elven:
<conceptGrp>.....</conceptGrp> должен быть в отдельном файле
так точно
Цитата Elven:
.....</conceptGrp> и <conceptGrp>.....
ничего нет между ними

Отправлено: 13:56, 24-08-2016 | #3


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


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

Профиль | Отправить 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
Скрипт нашел как ни странно на ютубе : ютуб,сайт с туториалом
Цитата:
И пожалуйста вариант как обратно склеить в одну строку все 25тыс файлов.
Непонял зачем это, если есть исходник, но возможно устроит следующее решение:
Код: Выделить весь код
copy "папка с фалами котроые нужно объединитьв один\*.xml" 1.xml

Последний раз редактировалось gremlintv2, 24-08-2016 в 16:59.

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

Отправлено: 16:08, 24-08-2016 | #4


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


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

Профиль | Отправить 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
Благодарности: 8087

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


Цитата blither:
имеется огромный однострочный xml с которым невозможно работать! »
Хотелось бы понять, что именно подразумевается под «невозможно работать». Поскольку есть, например, такое: Сравнение редакторов XML — Википедия.

Отправлено: 17:00, 24-08-2016 | #6


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


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

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


Цитата:
И увы notepad++ "Не отвечает"
А может ему просто нужно время для обработки файла ?
Сейчас чисто из интереса запустил замену перевода строки на теги в словаре весом 200Мб. Так как гиговый словарь notepad++ отказался открывать. =(

Последний раз редактировалось gremlintv2, 24-08-2016 в 17:39.


Отправлено: 17:33, 24-08-2016 | #7


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


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

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


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

gremlintv2, Iska, Ок. дождусь вечера и пусть notepad++ пилит его на строки до самого утра, и уж завтра ночью делить его на файлы, до самого утра ))))
Спасибо!

Отправлено: 17:34, 24-08-2016 | #8


Ветеран


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

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


Цитата blither:
а файл слишком велик для перевода. »
Какой-нибудь online-переводчик? Он Вам xml напереводит .

Отправлено: 21:10, 24-08-2016 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] xml одной строкой и весом 70mb разбить по файлам

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход