Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
Windows批处理脚本-比较if语句中的字符串_Windows_Batch File - Fatal编程技术网

Windows批处理脚本-比较if语句中的字符串

Windows批处理脚本-比较if语句中的字符串,windows,batch-file,Windows,Batch File,我正在尝试编写一个Windows批处理脚本,它检查XML文件(iml文件)以搜索某一行。字符串中的空格有问题。有没有办法逃离或补偿这些空间 for /f "tokens=*" %%a in (abcd.iml) do ( echo %%a if %%a==^<orderEntry type="inheritedJdk" ^> (echo 'FOUND') ) for/f“tokens=*”%%a in(abcd.iml)do( 回声%%a 如果%%a==^(回显“

我正在尝试编写一个Windows批处理脚本,它检查XML文件(iml文件)以搜索某一行。字符串中的空格有问题。有没有办法逃离或补偿这些空间

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if %%a==^<orderEntry type="inheritedJdk" ^> (echo 'FOUND')
 )
for/f“tokens=*”%%a in(abcd.iml)do(
回声%%a
如果%%a==^(回显“找到”)
)

将%%a放在引号中,使其类似于“%%a”。与其使用“==”运算符比较%%a和“^”,不如使用EQU比较器,使最终代码看起来像:

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if "%%a" EQU "<orderEntry type="inheritedJdk" >" (echo 'FOUND')
 )
for/f“tokens=*”%%a in(abcd.iml)do(
回声%%a
如果“%%a”eq”“(回显“找到”)
)

有关EQU和其他运算符的详细信息,请参见或

将%%a放在引号中,使其类似于“%%a”。与其使用“==”运算符比较%%a和“^”,不如使用EQU比较器,以便最终代码如下所示:

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if "%%a" EQU "<orderEntry type="inheritedJdk" >" (echo 'FOUND')
 )
for/f“tokens=*”%%a in(abcd.iml)do(
回声%%a
如果“%%a”eq”“(回显“找到”)
)

有关EQU和其他运算符的更多信息,请参阅或

无需为循环设置
。一个简单的
findstr
要快得多:

 findstr /c:"<orderEntry type=\"inheritedJdk\" >" "abcd.iml" >nul && echo found || echo nope
findstr/c:“abcd.iml”>nul&echo-found | | echo-nope

注意:字符串中的引号必须转义(findstr的转义字符是反斜杠)

不需要
for
循环。一个简单的
findstr
要快得多:

 findstr /c:"<orderEntry type=\"inheritedJdk\" >" "abcd.iml" >nul && echo found || echo nope
findstr/c:“abcd.iml”>nul&echo-found | | echo-nope

注意:字符串中的引号必须转义(findstr的转义字符是反斜杠)

您应该始终在字符串比较中使用引号<代码>如果“%%a”==”
…和
(echo'FOUND'^)
。您应该始终在字符串比较中使用引号<代码>如果“%%a”==”…和
(echo'FOUND'^)
。Neko Musume,我认为你应该读Sqashman的开场白,因为目前(尽管你已经收到了投票),你的回答没有达到预期效果。哦,你是说echo上的突破键吗?对不起,我从来没有真正了解如何使用它,但我可以编辑答案并添加它。请阅读评论!很明显,如果你有机会自己测试一下。对任何文件进行测试都不需要花费太多的时间,在一行中插入或不插入所需的字符串
。它已经对我起作用了,我已经对它进行了测试,所以我不知道你说的是什么错误。我想你应该阅读Sqashman的开场白,因为目前,(尽管你已经收到了向上的投票)你的答案不符合预期。哦,你是说echo上的断开键吗?对不起,我从来没有真正了解如何使用它,但我可以编辑答案并添加它。请阅读评论!显然,如果你有机会自己测试它。对任何文件进行测试都不需要花费太多时间,相应地重命名并插入r在一行上需要字符串
。它已经对我起作用了,我已经测试过了,所以我不知道你说的是什么错误不能“findstr”更好地搜索文件中的文本?@NekoMusume
findstr
较新,并且有更多选项,但是
find
对于某些任务来说非常好,所以更新并不总是更好。但是在这种情况下,您是对的。字符串中的引号必须转义。
find
无法做到这一点(我以前的
find
解决方案运行良好,只是“偶然的”(满足于
不会“findstr”)更好地搜索文件中的文本?@NekoMusume
findstr
较新,并且有更多选项,但是
find
对于某些任务来说非常好,所以更新并不总是更好。但是在这种情况下,您是对的。字符串中的引号必须转义。
find
无法做到这一点(我以前的
find
解决方案运行良好,只是“偶然”(只是