0

我有很多文本文件,其中包含一些 html 代码。例如:

Some random text....
..
...
....
<tag1>some more random text</tag1>
....
...
..

我需要运行一个脚本来遍历每个文本文件并将标签之间的每一行移动到同一文件夹中的新文本文件中,然后将它们从原始文件中删除。

所以最终结果是一个文件没有<tag1>,另一个文件只有<tag1>.

我希望我说得够清楚。这是可能吗?

4

1 回答 1

2

IF(这是一个大的、加粗的、斜体的、大写的IF)你可以保证每个<tag1>...</tag>标签出现在一行上,同一行上没有其他内容,并且没有标签属性使事情复杂化,那么答案很简单.

编辑- 修复了一些错误,现在它实际上可以工作了:-)

@echo off
for %%F in (*.txt) do (
  echo processing %%F
  findstr /rc:"^ *<tag1>.*</tag1> *$" "%%F" >"%%~nF.tag1%%~xF"
  findstr /rvc:"^ *<tag1>.*</tag1> *$" "%%F" >"%%~nF.new%%~xF"
  >nul move /y "%%~nF.new%%~xF" "%%F"
)

该解决方案可以扩展为相当容易地处理标签属性。

但我严重怀疑你的问题真的那么简单。有效的 HTML 内容可以有一个标签跨越多行,并且一行可以有很多标签。

通常,Windows 原生批处理在文本处理方面非常糟糕,对于 HTML 或 XML 更糟糕。我强烈建议使用具有强大文本处理功能的第三方工具,例如适用于 Windows 的 gnu sed。或者更好的是,获得一个专门用于处理 HTML 的工具。

于 2012-07-31T21:21:16.513 回答