使用批处理文件将多个xml文档合并为一个大文档

tob*_*b88 3 batch-file

我有一个包含86个xml文件的目录,这些目录具有相同的列和格式,需要组合成一个大的xml文件。我对批处理文件非常缺乏经验,我的第一次尝试是使用...简单地将一个文件文本追加到下一个文件中。

FOR %%i IN (directory\*.001) DO type %%i >> directory\combo_file.001
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试在excel中打开它时,这会产生一个解析错误。我想这是因为许多字段和标签都重复了。有谁知道我怎么能做到这一点?我只需要在excel中打开此文件,因此可以选择将文件转换为CSV。

非常感谢任何帮助,谢谢!

Bha*_*kar 6

一个非常简单的方法是进行简单的复制:

复制* .xml new.xml

创建的new.xml文件将所有xml文件合并在一起。您可以使用相同的命令创建BAT文件

  • 我是从 Windows 命令提示符执行此操作的。辛苦了。谢谢 :) (2认同)
  • 这非常有效,谢谢,不知道为什么它没有被标记为答案。 (2认同)

小智 5

这是一个快速批处理命令,它将当前目录中的所有 xml 文件合并到一个文件 CombineXML.bat 中。它使用新的根节点(“<root>”)包装所有 XML 文件。

但是,在您的情况下,您可能不想将这个新层引入 XML。如果您所做的只是在单个区域(例如:在 Web 浏览器中)查看 XML,则此方法有效。

--CombineXML.bat--
@echo on
rem ==clean up==
erase %0.xml
rem ==add the root node==
echo ^<root^> > %0.txt
rem ==add all the xml files==
type *.xml >> %0.txt
rem ==close the root node==
echo ^<^/root^> >> %0.txt
rem ==rename to xml==
ren %0.txt %0.xml
Run Code Online (Sandbox Code Playgroud)


vul*_*ino 1

问题在于 XML 有一个起始标记,如: ,<?xml version="1.0" encoding="UTF-8"?>它将在合并的文档上重复。此外,如果有一个根标签包含所有其他标签,则合并时会多次包含该根标签。

我认为,即使使用强大的 shell 和 Linux/Unix 中的命令(find、grep 等),在批处理 shell 中执行此操作也非常困难(如果可能的话)。

我会使用一个简单的程序(例如,VBA)来做到这一点。

编辑:我发现在 Excel 中您可以导入多个 xml 文件。您必须转到“开发”选项卡(如果隐藏则显示它)。然后在 XML 组中,选择导入并选择多个 XML 文件。那应该有效。