使用批处理删除文本文件中的某些文本

问题描述 投票:0回答:1

有一个Analysis.txt文件,我需要所有包含“<Path> TEXT </ Path>”和<Channel> 1 </ Channel>的行。我这样做了:

FOR /F %%i in (Analysis\Analysis.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的第一行并组合它们。

问候,

亚历克斯

batch-file search text
1个回答
0
投票

假设,由于缺少其他信息(例如,例如行),所需文本全部在一条物理线上,并且该行没有前面的空白字符,

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和管道。)

© www.soinside.com 2019 - 2024. All rights reserved.