这是我尝试在更复杂的批处理文件中实现的一个非常基本的示例。我想从输入参数(%1
)中提取子字符串,并根据是否找到子字符串进行分支。
@echo off
SETLOCAL enableextensions enabledelayedexpansion
SET _testvariable=%1
SET _testvariable=%_testvariable:~4,3%
ECHO %_testvariable%
IF %_testvariable%=act CALL :SOME
IF NOT %_testvariable%=act CALL :ACTION
:SOME
ECHO Substring found
GOTO :END
:ACTION
ECHO Substring not found
GOTO :END
ENDLOCAL
:END
这就是我的输出:
C:\>test someaction
act
=act was unexpected at this time.
如果可能,我想将其转换为IF / ELSE语句并直接从%1
进行评估。但是我也没有成功。
答案 0 :(得分:1)
在IF
语句中,将=
替换为==
。
我认为您还希望将CALL
语句替换为GOTO
。
以下是您的代码,但使用IF/ELSE
代替两个IF
语句。
@echo off
SETLOCAL enableextensions enabledelayedexpansion
SET _testvariable=%1
SET _testvariable=%_testvariable:~4,3%
ECHO %_testvariable%
IF %_testvariable%==act (
GOTO :SOME
) ELSE (
GOTO :ACTION
)
:SOME
ECHO Substring found
GOTO :END
:ACTION
ECHO Substring not found
GOTO :END
:END
ENDLOCAL