如何使用批处理文件在循环内的字符串中查找子字符串?
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
这是我使用的代码:
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