循环的批处理文件删除xml注释节点

时间:2011-04-19 10:37:46

标签: batch-file batch-processing

当我解析一个xml文件以便在批处理作业中处理时,注释节点似乎被改变了;这与特殊字符有关吗?我该如何防止它。

这样的节点:<!--Location: D:\\Logs--> 通过%% G < D:\\Logs-->

查询时看起来像这样

一个小代码示例:

        **setLocal EnableDelayedExpansion
    for /f "usebackq tokens=* delims= " %%G in ("%HOMEDRIVE%\Logs\Connections.xml") do (

            set str=%%G     

        echo !str!

            PAUSE

    )

endlocal

    **

1 个答案:

答案 0 :(得分:2)

你有三个问题。

  1. 通过延迟展开,它会删除/处理!和插入^作为特殊字符,因为{/ 1}}在扩展后评估为 -loop-var %% G
  2. 有些文字无法使用简单!显示,例如echoOFFON
  3. 删除空行,因为FOR-Loop不处理它们
  4. 要解决1.你应该使用延迟切换技巧 要解决2.您可以使用/?表单。

    所以你得到了

    echo(

    如果要解决3.(空行),可以使用setLocal DisableDelayedExpansion for /f "usebackq tokens=* delims=" %%G in ("%HOMEDRIVE%\Logs\Connections.xml") do ( set "str=%%G" setLocal EnableDelayedExpansion echo(!str! endlocal ) 对所有行进行编号,因此没有行为空,然后删除循环中的数字。

    findstr /n