Windows批处理脚本将行从文本文件移动到新文件

时间:2012-07-31 20:51:17

标签: windows parsing batch-file

我有一大堆带有一些html代码的文本文件。 EG:

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

我需要运行一个脚本来浏览每个文本文件,然后标记之间的每一行移动到同一文件夹中的新文本文件中,然后将其从原始文件中删除。

因此,最终结果将是一个没有<tag1>的文件和另一个只有<tag1>的文件。

我希望自己足够清楚。这有可能吗?

1 个答案:

答案 0 :(得分: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的工具。