Batch file 如果str不包含169,则用于执行命令的findstr

Batch file 如果str不包含169,则用于执行命令的findstr,batch-file,if-statement,findstr,errorlevel,Batch File,If Statement,Findstr,Errorlevel,我是批处理文件的新手,看过几篇关于findstr的帖子,但我无法在包含IP地址的字符串中找到169 set Foo=169.254.100.1 SET Foo|findstr /i 169 if ERRORLEVEL 1 (echo it doesnt contain 169, do launch) else (echo it contains 169, don't do launch) ) 正如您所看到的,Foo包含169,但当我查找时,它返回1并显示“它不包含169

我是批处理文件的新手,看过几篇关于findstr的帖子,但我无法在包含IP地址的字符串中找到169

    set Foo=169.254.100.1
    SET Foo|findstr /i 169
    if ERRORLEVEL 1 (echo it doesnt contain 169, do launch) else (echo it contains 169, don't do launch)
)

正如您所看到的,Foo包含169,但当我查找时,它返回1并显示“它不包含169,请启动”


有人能看出这里有什么问题吗?

我可以建议另一种不使用findstr的方法来实现此测试吗

set Foo=169.254.100.1
if "%Foo:169=%" equ "%Foo%" (
   echo it doesnt contain 169, do launch
) else (
   echo it contains 169, don't do launch
)

我不知道这怎么对你不起作用。你发布的代码对我有用。不需要使用
/i
开关,但它也不会造成任何伤害。我是否可以建议使用
echo%foo%|findstr 169
而不是
set foo | findstr 169
?您可能有另一个以
foo
开头的变量,如“foobar”,您可能会得到“错误的正数”。除此之外,您的代码对我很有用。另一件事:使用
/B
findstr
(在字符串开头搜索),否则
10.11.12.169
也将是积极的(我想不是您想要的)谢谢您的回复。这似乎对我有用。我唯一意识到的是,出于某种原因,我们需要在我的机器上书写!而不是%。更换后,我得到了正确的行为。