19

假设以下批处理文件

set variable1=this is variable1
set variable2=is
set variable3=test

if variable1 contains variable2 (
    echo YES
) else (
    echo NO
)

if variable1 contains variable3 (
    echo YES
) else (
    echo NO
)

我希望输出是 YES,然后是 NO

4

3 回答 3

22

我已经用以下方法解决了这个问题

setLocal EnableDelayedExpansion

set variable1=this is variable1
set variable2=is
set variable3=test

if not "x!variable1:%variable2%=!"=="x%variable1%" (
    echo YES
) else (
    echo NO
)

if not "x!variable1:%variable3%=!"=="x%variable1%" (
    echo YES
) else (
    echo NO
)

endlocal

我从以下答案中得到了基本想法,但它不是通过变量搜索,所以它不完全是我想要的。

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

于 2013-07-11T23:46:55.797 回答
6

另一种方式:

echo/%variable1%|find "%variable2%" >nul
if %errorlevel% == 0 (echo yes) else (echo no)

防止/输出Echo is ONEcho is OFF万一%variable1%为空。

于 2013-07-12T13:30:28.137 回答
3

加里·布伦顿的回答对我不起作用。

如果您尝试使用set variable1="C:\Users\My Name\",最终会出现错误:

 'Name\""' is not recognized as an internal or external command

调整这个答案找出环境变量是否包含子字符串,我最终得到:

echo.%variable1%|findstr /C:"%variable2%" >nul 2>&1
if not errorlevel 1 (
   echo Found
) else (
   echo Not found
)
于 2014-11-28T02:25:50.800 回答