Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file .bat-检查文件中的字符串_Batch File_Dos - Fatal编程技术网

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

Batch file .bat-检查文件中的字符串,batch-file,dos,Batch File,Dos,我有一个用制表符和空格填充的xml文件。我正在尝试搜索此文件中的字符串。文件如下所示。我正在尝试搜索,它被选项卡和空格包围 <ViewSettings> <Location> <X>0</X> <Y>0</Y> </Location> </ViewSettings> <WorkspaceName="FREE_UST_BETA_UA" PAth="\\mktxindfs\data_

我有一个用制表符和空格填充的xml文件。我正在尝试搜索此文件中的字符串。文件如下所示。我正在尝试搜索
,它被选项卡和空格包围

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

0
0
我有下面的代码

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.....
    )
)
echo关闭
延迟扩展
对于(C:\add\WorkspaceXML\Workspaces.xml)中的%%X,请执行以下操作(
设置“引用=”
对于/f“delims=“%%T IN(%%X)do(
设置输出=%%T
回波输出:!输出!
如果!输出!==!引用!回显找到引用。。。。。
)
)
它不打印“找到的引用”


谢谢

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

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

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

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

当然,这只是为您显示变量,但您可以根据需要设置它们。

嗨,Adam,是的,我想到了这一点,但我不确定它是否告诉我该字符串在文件中的确切位置。我需要在文件中的这个字符串之后执行一些操作。谢谢。@NewQueries-上面更新了,希望这能帮助更多。这很好,所以这将是我的控制台输出,对吗?有什么方法可以在变量中得到这个值吗?(主要是行号)@newquerys-偏移量没有你想象的那么有用。它是从文件开头到匹配行开头的偏移量(以字节为单位)。它不显示行中匹配字符串的偏移量。是否确实需要使用批处理文件或windows命令行工具执行此任务?你对其他工具开放吗?
FOR /F "tokens=1,2 delims=:" %%a in ('findstr /N /O /c:"</ViewSettings>" C:\add\WorkspaceXML\Workspaces.xml') do echo %%a %%b