批处理脚本删除重复的行,但想忽略/跳过一些行

是否也可以忽略一些重复的行,而从XML文件中删除其他重复,例如:如果我的abx.xml是CODE:

@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%" 

只有BATCH SCRIPT请。

 <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> 

我搜查了几个simillar请求,但其中大多数是删除所有重复的行,但不知道如何忽略一些重复的行:

批处理从文本文件中删除重复的行

这可能对你有用,如果你总是行打印%dict%文件中:

 @ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION SET "file=file" SET "new=new" SET "dict=dictionary" (FOR /f "tokens=1*delims=:" %%a IN ('findstr /n "^" "%file%"') DO ( SET "nr=%%a" SET "line=%%b" SET "this=" FINDSTR /l "!line!" "%dict%" >NUL 2>&1&& ECHO(!line! || ( FOR /f "tokens=1*delims==" %%x IN ('set "$" 2^>nul') DO IF !line!==%%y SET "this=1" IF "!this!"=="" ( ECHO(!line! SET "$!nr!=!line!" ) ) ))>"%new%" TYPE "%new%" 

..shell会话:

  >type file <bookstores> <book id="parent"> <name="it1"/> <name="it1"/> <name="it2"/> </book> <book id="child"> <name="it1"/> <name="it1"/> <name="it2"/> <name="it3"/> </book> </bookstores> >type dictionary </book> >script.bat <bookstores> <book id="parent"> <name="it1"/> <name="it2"/> </book> <book id="child"> <name="it3"/> </book> </bookstores>