.bat - 检查文件中的字符串

时间:2012-02-23 17:35:35

标签: batch-file dos

我有一个包含制表符和空格的xml文件文件。我正在尝试在此文件中搜索字符串。文件类似于下面的内容。我正在尝试搜索 </ViewSettings> ,这被标签和空格所包围。

<ViewSettings>
  <Location>
  <X>0</X>
  <Y>0</Y>
  </Location>
</ViewSettings>
<WorkspaceName="FREE_UST_BETA_UA" PAth="\\mktxindfs\data_configuration\FREE_BETA"      IsAdmin="false" />
</Workspaces>

我有以下代码

echo off
setlocal enabledelayedexpansion

for %%X in (C:\add\WorkspaceXML\Workspaces.xml) do (
set "reference=</ViewSettings>"
for /f "delims=" %%T IN (%%X) do (  
        set output=%%T
        echo output:!output!
        if !output!==!reference! echo found reference.....
    )
)

它不会打印“找到参考”

由于

1 个答案:

答案 0 :(得分:2)

您是否考虑过从findstr构建批处理文件?此命令将通过报告文件名告诉您字符串是否在文件中。

findstr /M /c:"</ViewSettings>" C:\add\WorkspaceXML\Workspaces.xml

修改

如果您使用findstr /N /O ...代替,您可以获得匹配的行号和偏移量,这可能对您更有用。上面案例中的输出将是

6:69:</ViewSettings>

编辑2

由于dbenham,上面添加了正确的偏移量。不确定偏移量是否仍然有用,但要在变量中获取这两个值,请尝试:

FOR /F "tokens=1,2 delims=:" %%a in ('findstr /N /O /c:"</ViewSettings>" C:\add\WorkspaceXML\Workspaces.xml') do echo %%a %%b 

这只会为您显示变量,但您可以根据需要进行设置。