首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否在批处理文件(Windows)中检查子字符串的字符串?

是否在批处理文件(Windows)中检查子字符串的字符串?
EN

Stack Overflow用户
提问于 2012-01-06 18:58:56
回答 1查看 66.7K关注 0票数 21

假设我在一个名为$1的变量中有一些文本,现在我想检查$1是否包含某个特定的字符串。如果它包含某个字符串,我想打印一条消息。打印不是问题,问题是支票。你知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 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“。默认情况下,搜索区分大小写。

代码语言:javascript
复制
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
)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8756804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档