如何使用批处理文件在循环内的字符串中查找子字符串?

How to find with a batch file a substring in string inside a loop?

这是我使用的代码:

setlocal enabledelayedexpansion
set argCount=0
for %%x in (%*) do (
   set /A argCount+=1
   set "argVec[!argCount!]=%%~x"
)
echo Number of processed arguments: %argCount%
set str1=hello
for /L %%i in (1,1,%argCount%) do (
    set "str2=!argVec[%%i]!"
    If NOT "!str1!"=="!str1:!str2!=!" set COND=1
    echo !COND!
)

此代码计算传递给批处理文件的参数并将它们分配给环境变量。仅当参数字符串包含字符串 hello.

时,才应使用 1 定义环境变量 COND

问题出在这一行:

If NOT "!str1!"=="!str1:!str2!=!" set COND=1

变量 COND 总是用 1 定义。

有什么办法可以解决吗?

PS: str2 是用当前参数(argument)定义的,用于检查 hello.

@ECHO OFF
setlocal enabledelayedexpansion
set argCount=0
set "str1=hello"
SET /a cond=0
for %%x in (%*) do (
 set /A argCount+=1
 set "argVec[!argCount!]=%%~x"
 IF NOT "%str1%"=="!str1:%%~x=!" SET /a cond=argcount
 ECHO !cond!
)
echo Number of processed arguments: %argCount%
GOTO :EOF

将显示在其中找到子字符串的参数编号 cond 并且 cond 将设置为这些查找中的最后一个,或者如果找到 none 则设置为 0