【发布时间】:2013-07-25 13:45:44
【问题描述】:
是否也可以在从 xml 文件中删除其他重复项时忽略一些重复行,例如:如果我的 abx.xml 是 代码:
@echo off
setlocal disableDelayedExpansion
set "file=%~1"
set "line=%file%.line"
set "deduped=%file%.deduped"
::Define a variable containing a linefeed character
set LF=^
::The 2 blank lines above are critical, do not remove
>"%deduped%" (
for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%file%") do (
set "ln=%%A"
setlocal enableDelayedExpansion
>"%line%" (echo !ln:\=\\!)
>nul findstr /xlg:"%line%" "%deduped%" || (echo !ln!)
endlocal
)
)
>nul move /y "%deduped%" "%file%"
2>nul del "%line%"
请仅批处理脚本。
<bookstores>
<book id="parent">
<name="it1"/>
<name="it1"/>
<name="it2"/>
</book>
<book id="child">
<name="it1"/>
<name="it1"/>
<name="it2"/>
<name="it3"/>
</book>
</bookstores>
输出应该是:
<bookstores>
<book id="parent">
<name="it1"/>
<name="it2"/>
</book>
<book id="child">
<name="it3"/>
</book>
</bookstores>
但我得到的输出是:
注意: </book> 标记已删除。
<bookstores>
<book id="parent">
<name="it1"/>
<name="it2"/>
</book>
<book id="child">
<name="it3"/>
</bookstores>
我搜索了几个类似的请求,但大多数都删除了所有重复的行,但不知道如何忽略一些重复的行:
【问题讨论】:
-
您正试图将 XML 视为纯文本文件。它是,它不是。 XML 是一种结构,您发布的链接是针对非结构化文件的。有时您必须为工作使用正确的工具。像
XSLT这样的东西更适合这个。 -
发布您的代码,这样我们就不必重新编写它了。
-
stackoverflow.com/questions/11689689/… 给定的链接有代码。
-
请在您的问题中添加代码。评论区看不懂。
-
代码添加到问题中。
标签: windows batch-file duplicates file-processing