为了账号安全,请及时绑定邮箱和手机立即绑定

批处理文件:查找子字符串是否在字符串中(而不是在文件中)

/ 猿问

批处理文件:查找子字符串是否在字符串中(而不是在文件中)

UYOU 2019-07-15 15:08:28

批处理文件:查找子字符串是否在字符串中(而不是在文件中)

在批处理文件中,我有一个字符串。abcdefg..我想检查一下bcd在绳子里。

不幸的是,我找到的所有解决方案档案对于子字符串,而不是用于子字符串的字符串。

有什么简单的解决办法吗?


查看完整描述

3 回答

?
慕田峪7331174

是的,您可以使用替换并对照原始字符串进行检查:

if not x%str1:bcd=%==x%str1% echo It contains bcd

这个%str1:bcd=%位将取代bcd在……里面str1使用空字符串,使其与原始字符串不同。

如果原始文件不包含bcd字符串中,修改后的版本将是相同的。

使用以下脚本进行测试将显示它的作用:

@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal

以及各种运行的结果:

c:\testarea> testprog hello

c:\testarea> testprog abcdef
It contains bcd

c:\testarea> testprog bcd
It contains bcd

几个注意事项:

  • 这个

    if

    语句是该解决方案的核心,其他一切都是支持性的。
  • 这个

    x

    前面的两边相等是为了确保字符串

    bcd

    工作正常。它还可以防止某些“不适当”的起始字符。


查看完整回答
反对 回复 2019-07-15
?
饮歌长啸

可以将源字符串输送到findstr并检查ERRORLEVEL若要查看是否找到模式字符串,请执行以下操作。值为零表示成功,并找到了模式。以下是一个例子:

::
: Y.CMD - Test if pattern in string
: P1 - the pattern
: P2 - the string to check
::
@echo off

echo.%2 | findstr /C:"%1" 1>nul

if errorlevel 1 (
  echo. got one - pattern not found
) ELSE (
  echo. got zero - found pattern
)

当在cmd.exe中运行时,我们得到:

C:\DemoDev>y pqrs "abc def pqr 123"
 got one - pattern not found

C:\DemoDev>y pqr "abc def pqr 123" 
 got zero - found pattern


查看完整回答
反对 回复 2019-07-15
?
紫衣仙女

我通常会做这样的事情:

Echo.%1 | findstr /C:"%2">nul && (
    REM TRUE
) || (
    REM FALSE
)

例子:

Echo.Hello world | findstr /C:"world">nul && (
    Echo.TRUE
) || (
    Echo.FALSE
)

Echo.Hello world | findstr /C:"World">nul && (Echo.TRUE) || (Echo.FALSE)

产出:

TRUE
FALSE

我不知道这是不是最好的方法。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 326 浏览
我要回答
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信