假设我在一个名为$1的变量中有一些文本,现在我想检查$1是否包含某个特定的字符串。如果它包含某个字符串,我想打印一条消息。打印不是问题,问题是支票。你知道怎么做吗?
发布于 2012-01-06 21:32:11
设置搜索和替换技巧在许多情况下都有效,但它不支持区分大小写或正则表达式搜索。
如果您需要区分大小写的搜索或有限的正则表达式支持,则可以使用FINDSTR。
为了避免特殊字符转义的复杂性,最好是搜索字符串在一个变量中,并且搜索和目标都是通过延迟扩展访问的。
您可以使用ECHO命令将$1传递到FINDSTR命令。在未定义$1的情况下使用ECHO(
,并注意不要添加额外的空格。如果未定义$1,则ECHO !$1!
将回显ECHO is off.
(或on),而如果未定义,ECHO(!$1!
将回显一个空行。
如果FINDSTR找到搜索字符串,它将回显$1 -您不希望这样,因此将输出重定向到nul。如果找到搜索字符串,FINDSTR将ERRORLEVEL设置为0,如果未找到,则设置为1。这就是用来检查是否找到字符串的方法。&&
和||
是用于测试是否匹配(ERRORLEVEL 0)或不匹配(ERRORLEVEL not 0)的方便语法
正则表达式支持是基本的,但仍然很有用。
参见FINDSTR /?了解更多信息。
这个正则表达式示例将搜索$1,在字符串的开头搜索"BEGIN“,在中间的任何位置搜索"MID”,在结尾搜索" end“。默认情况下,搜索区分大小写。
set "search=^BEGIN.*MID.*END$"
setlocal enableDelayedExpansion
echo(!$1!|findstr /r /c:"!search!" >nul && (
echo FOUND
rem any commands can go here
) || (
echo NOT FOUND
rem any commands can go here
)
https://stackoverflow.com/questions/8756804
复制相似问题