我有一个文本文件,如下所示:
<Line Text="***********TITLE************" />
<Line Text="***REPORT****" />
<Line Text=TEXT" />
<Line Text=" " />
<Line Text="TEXT" />
<Line Text="TEXT" />
<Line Text=" " />
<Line Text="TEXT" />
<Line Text="TEXT" />
<Line Text=" " />
我要创建一个批处理文件以删除“ <Line Text="
”和“ " />
”,从而使文件看起来像这样:
***********TITLE************
***REPORT****
TEXT
TEXT
TEXT
TEXT
TEXT
我尝试了以下方法:
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=^<Line Text"
set "replace="
set "textFile=test.txt"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
导致删除文件中的所有文本。我确实尝试删除了“小于”和“大于”的标志。但是,有些方法仍然无法获得理想的结果。
答案 0 :(得分:1)
您的代码中有两个问题:
<
和>
并替换^>
和^>
之类的字符串,因为当变量{{1 }}和%search%
展开。%replace%
符号,因为它会分隔搜索字符串和替换字符串。因此,我将使用for /F
来分割行,例如:
=
答案 1 :(得分:0)
这里有几个例子可以帮助您。
此示例仅适用于所提供的文本文件格式和内容:
@Echo Off
Set "InputFile=infile.txt"
Set "OutputFile=outfile.txt"
If Exist "%InputFile%" ((For /F UseBackQTokens^=2Delims^=^=^" %%A In (
"%InputFile%")Do Set /P "=%%A"<NUL&Echo()>"%OutputFile%")
如果您在3
行上有错字,而您确实错过了开头的双引号,那么:
@Echo Off
Set "InputFile=infile.txt"
Set "OutputFile=outfile.txt"
If Exist "%InputFile%" ((For /F UseBackQTokens^=2Delims^=^" %%A In (
"%InputFile%")Do Set /P "=%%A"<NUL&Echo()>"%OutputFile%")
无论哪种情况,您都只需要根据需要修改2
和3
行上的文件名/路径。