批量查找和复制行

我需要剥离文本文件的一部分并将其写入另一个文本文件。剥离的文本文件也应该保存。 之前:
Original.txt = "<xml><something>values</something><script>TEXT-TO-DELETE</script></xml>"
后:
Original.txt = "<xml><something>values</something><script></script></xml>"

Original_script.txt = "TEXT-TO-DELETE"
.. 这是一个多行文件,因此脚本部分跨越多行。 我试过发布的脚本,但永远无法理解语法。
"@echo off & setlocal 
set "Data=D:Original.txt" 
set "Bak=%Data%.bak" 
move "%Data%" "%Bak%" 
for /f "usebackq delims=" %%i in ("%Bak%") do set "LINE=%%i" & call :ProcessLine 
REM del "%Bak%" 
goto :eof 
:ProcessLine 
echo %LINE%>>"%Data%"
echo %LINE%|findstr /b "<script>">nul || goto :eof 
goto :eof"
这应该适用于Windows计算机..(更新的操作系统支持) 编辑:因为我不能回答我自己的线程,我在这里做: 谢谢你的回答。 不幸的是,我不想为此使用共享软件。 我用另一种语言解析,我只需要删除它。 这是一个荒谬的3班轮:
file={"p1.txt","p2.txt","p1.txt"}
find={"<search>","</search>,"<xml>"}
count=1
foreachline in file[count] print line to file[count]
if find[count] in line then count++
或类似的。如果没有1000种方式/样式的脚本,我可以自己解决这个问题。只是认为一些裂缝会给它一分钟。     
已邀请:
我认为带有CLI的XSLT处理器是最合适的工具。 AltovaXML2011是我现在最常用的。 然后脚本可以是这样的,将
script
元素的内容提取到Original_script文件,然后更新原始文件:
@echo off
set orig="D:Original.txt"
set script="D:Original_script.txt"
set backup="D:Original_backup.txt"
set xsltprocessor="D:AltovaXML.exe"
move %orig% %backup%
::extract scripts
%xsltprocessor% -xslt1 "D:ExtractScripts.xslt" -in %backup% -out %script%
::update original
%xsltprocessor% -xslt1 "D:UpdateOriginal.xslt" -in %backup% -out %orig%
::del %backup%
使用ExtractScripts.xslt,它会提取所有
script
元素的内容(添加换行符):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" omit-xml-declaration="yes"/>
    <xsl:template match="/">
        <xsl:apply-templates select="//script"/>
    </xsl:template>
    <xsl:template match="//script">
        <xsl:apply-templates/>
        <xsl:text>
</xsl:text>
    </xsl:template>
</xsl:stylesheet>
如果UpdateOriginal.xslt看起来像这样,它只复制整个原始文件,但遗漏了所有
script
元素的内容(已经单独提取):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="//script">
        <xsl:copy/>
    </xsl:template>
</xsl:stylesheet>
之后您可以选择保留或删除备份文件。     

要回复问题请先登录注册