Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Можно ли средствами cmd объединить однотипные XML-файлы в один? (http://forum.oszone.net/showthread.php?t=315657)

uzlprog 07-06-2016 15:20 2641085

Можно ли средствами cmd объединить однотипные XML-файлы в один?
 
Дано: очень много однотипных файлов xml вида:

Код:

<?xml version="1.0" encoding="WINDOWS-1251"?>
-<journal>-<MainTable><id>xxx</id><carnumber>xxx</carnumber><videochan>xxx</videochan><channel_id>3</channel_id><passdate>2016-05-06T00:00:00</passdate><passtime>xxx</passtime><direction>xxx</direction><carimage><description>xxx</description><idArchivePath>xxx</idArchivePath></MainTable>
...
...
</journal>

Нужно в обозримые сроки объединить их в один файл .xml, то есть для этого, нужно поместить содержимое всех файлов между тегами:

Код:

<?xml version="1.0" encoding="WINDOWS-1251"?>
-<journal>
...
...
</journal>

А еще, очень бы хотелось возможность удалить из содержимого тег <videochan>xxx</videochan>

Iska 07-06-2016 19:26 2641143

Цитата:

Цитата uzlprog
Можно ли средствами cmd »

Средствами WSH/PoSH.

uzlprog 07-06-2016 21:35 2641185

Не подкините пример?

Iska 07-06-2016 23:54 2641219

Цитата:

Цитата uzlprog
Не подкините пример? »

Не подкинете пример xml-файлов, до и после?

alpap 09-06-2016 08:41 2641598

Код:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%A in ('dir/a-d/b "*.xml"') do (
 <"%%A">$ (for /f "delims=" %%a in ('more') do @set "x=%%a"& set "x=!x:><=>","<!"& for %%b in ("!x!") do @set "y=%%~b"& echo !y!)
 <$>>"file.xml" (for /f "delims=" %%a in ('findstr/rv /c:"<journal>" /c:"<videochan>[0-9]*</videochan>" /c:"</journal>"') do @echo %%a)& del $
)
exit/b

Или в строку
Код:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%A in ('dir/a-d/b "*.xml"') do (
 <"%%A">$ (for /f "delims=" %%a in ('more') do @set "x=%%a"& set "x=!x:><=>","<!"& for %%b in ("!x!") do @set "y=%%~b"& echo !y!)
 <$>>"file.xml" (for /f "delims=" %%a in ('findstr/rv /c:"<journal>" /c:"<videochan>[0-9]*</videochan>" /c:"</journal>"') do @<nul set/p=%%a)& del $
)
exit/b

.


Время: 08:22.

Время: 08:22.
© OSzone.net 2001-