使用批处理删除文本文件中的某些文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用批处理删除文本文件中的某些文本相关的知识,希望对你有一定的参考价值。
有一个Analysis.txt文件,我需要所有包含“<Path> TEXT </ Path>”和<Channel> 1 </ Channel>的行。我这样做了:
FOR /F %%i in (AnalysisAnalysis.gla) do (
echo %%i >> Analysis.txt
)
::////Findet Alle Dateinamen in Analysis
for /f %%a IN ('type "Analysis.txt" ^| findstr /i "<Path>" 2^>nul') DO echo
%%a >> Path.txt
::////Findet den dazugehörigen Channel
for /f %%a IN ('type "Analysis.txt" ^| findstr /i "<Channel>" 2^>nul') DO
echo %%a >> Channel.txt
现在一切都好了。但我只需要<Path>和</ Path>之间的元素。
所以我的问题是我可以在将它们保存到另一个.txt之前删除<Path>和</ Path>,或者我可以只读取这些之间的元素并将其保存到变量中。
endresult应该获得Path.txt和Channel.txt的第一行并组合它们。
问候,
亚历克斯
答案
假设,由于缺少其他信息(例如,例如行),所需文本全部在一条物理线上,并且该行没有前面的空白字符,
for /f "tokens=2 delims=><" %%a IN ('type "Analysis.txt" ^| findstr /i "<Path>" 2^>nul') DO echo %%a >> Path.txt
应该管用。如果行上有空格,则将2
更改为3
。
请参阅提示中的for /?
进行推理 - 或者在SO上看到数以千计的类似示例。
(另外,findstr /i "<Path>" "Analysis.txt"
也可用于避开type
和管道。)
以上是关于使用批处理删除文本文件中的某些文本的主要内容,如果未能解决你的问题,请参考以下文章