Batch file 批量查找和复制行

Batch file 批量查找和复制行,batch-file,copy,find,lines,Batch File,Copy,Find,Lines,我需要剥离文本文件的一部分并将其写入另一个文本文件。剥离的文本文件也应保存 之前: Original.txt = "<xml><something>values</something><script>TEXT-TO-DELETE</script></xml>" Original.txt=“要删除的值文本” 之后: Original.txt = "<xml><something>values<

我需要剥离文本文件的一部分并将其写入另一个文本文件。剥离的文本文件也应保存

之前:

Original.txt = "<xml><something>values</something><script>TEXT-TO-DELETE</script></xml>"
Original.txt=“要删除的值文本”
之后:

Original.txt = "<xml><something>values</something><script></script></xml>"

Original_script.txt = "TEXT-TO-DELETE"
Original.txt=“值”
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"
@echo off&setlocal 设置“数据=D:\Original.txt” 设置“Bak=%Data%.Bak” 移动“%Data%”%Bak% 对于/f“usebackq delims=“%%i in”(“%Bak%”)设置“LINE=%%i”&调用:ProcessLine REM del“%Bak%” 后藤:eof :进程线 回显%LINE%>>%Data% 回显%LINE%| findstr/b“>num | goto:eof 后藤:eof“ 这应该适用于windows计算机。。(较新的操作系统支持)

编辑:因为我无法在自己的帖子上回答,所以我在这里回答:

谢谢你的回答。 不幸的是,我不想为此使用共享软件。 我正在用另一种语言解析,我只需要去掉这个

这是一个荒谬的三行:

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++
file={“p1.txt”、“p2.txt”、“p1.txt”}
查找={“”,“”}
计数=1
文件中的foreachline[count]将行打印到文件[count]
如果在第行中找到[count],则进行计数++

或者类似的。如果没有1000种方式/样式的脚本,我可以自己解决这个问题。我只是想一些破解会给它一分钟时间。

我认为带CLI的XSLT处理器是这里最合适的工具。这是我现在最常使用的工具

脚本可以是这样的,将
脚本
元素的内容提取到原始脚本文件中,然后更新原始文件:

@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
元素的内容(添加换行符):


您可以选择在以后保留或删除备份文件。

我认为带有CLI的XSLT处理器是这里最合适的工具。它是我现在最常用的工具

脚本可以是这样的,将
脚本
元素的内容提取到原始脚本文件中,然后更新原始文件:

@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
元素的内容(添加换行符):


您可以选择在以后保留或删除备份文件。

您必须更准确地描述文件的内容。最好举个例子。您能更明确地说明要使用哪种编程或脚本语言吗?在哪种操作系统上?这应该尽可能通用。我有win7 64位。应该是dos类型的批处理脚本。更新了OP!!!我想这是你的第一个BAT脚本。要掌握它的语法,从一个简短的教程开始。谷歌搜索“windows批处理教程”,阅读并开始学习。然后回到你的问题上来,我们很乐意回答。为了避免在特殊字符等方面太容易出错,我无法获得任何dos类型的批处理脚本(更不用说3行代码)来轻松执行XML文档的多行XML元素解析,而无需像我提到并链接到的工具那样的帮助。它有一个免费的社区版,不需要许可证密钥代码,可以免费使用,并且可以在32位和64位版本的Windows上使用。这是你的决定……你必须对文件内容更加精确。举个例子最好。你能更明确地说明你想使用哪种编程或脚本语言吗?在哪种操作系统上?这应该尽可能通用。我有win7 64位。应该是dos类型的批处理脚本。更新的OP!!!我想这是你的第一个蝙蝠脚本。要掌握其语法,请从一个简短的教程开始。谷歌“windows批量教程”,阅读并开始学习。然后回到你的问题上来,我们很乐意回答。为了避免在特殊字符等方面太容易出错,我无法获得任何dos类型的批处理脚本(更不用说3行代码)来轻松执行XML文档的多行XML元素解析,而无需像我提到并链接到的工具那样的帮助。它有一个免费的社区版,不需要许可证密钥代码,可以免费使用,并且可以在32位和64位版本的Windows上使用。这是你的电话…
<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>