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

问题描述 投票:0回答:1

我试图写一个Windows批处理脚本,检查一个XML文件(iml文件),以搜索某一行,即.NET。 我在字符串中的空格方面遇到了问题。 有什么方法可以转义或补偿这些空格?

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if %%a==^<orderEntry type="inheritedJdk" ^> (echo 'FOUND')
 )
windows batch-file
1个回答
1
投票

把%%a加引号,这样就像"%%a"。与其使用"=="运算符来比较%%a和"^",不如使用EQU比较器,这样最后的代码就会像这样。

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if "%%a" EQU "<orderEntry type="inheritedJdk" >" (echo 'FOUND')
 )

关于EQU和其他运算符的更多信息请看 https:/ss64.comntif.htmlhttps:/ss64.comntequ.html


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.