BAT中有一行IF语句无法执行
cmd吧
全部回复
仅看楼主
level 1
hehout 楼主
本想写一段自动执行*.7z压缩文件检查的BAT,如果出错误密码时,需要重新输入密码再执行一次*.7z压缩文件检查,但是发现其中有一行IF语句无法执行(SET /P _CHOICE_=后的IF无法执行),不明所以,特来请教。
测试环境:WIN7x64 CMD
测试过程:第一次输入Y,进入下一步;第二次故意输入一个错误的压缩密码,7z.exe会返回一个ERRORLEVEL=2;第三次输入1,按照流程应该会输出“TEST”字符串。
但实际是什么都没有,跟没有这一句一样。ECHO %_CHOICE_% 输出的值确实也是1,使用%_CHOICE_% EQU 1则会有语法错误。
@璐村惂鐢ㄦ埛_000076K馃惥 OFF
SET _PATH_7Z_=C:\Program Files\7-Zip\
ECHO Going to test *.7z Files...(Y/N)
SET /P _A_=
IF /I %_A_% == "Y" GOTO _EXIT_
ECHO Enter the default PASSWORD!
SET /P _PASSWORD_=
"%_PATH_7Z_%\7Z.EXE" t "20191108_120APPLE.7z.001" -p%_PASSWORD_% *.* -r
ECHO %ERRORLEVEL%
IF %ERRORLEVEL% EQU 0 GOTO _CONTINUE_
IF %ERRORLEVEL% EQU 2 GOTO _7ZTEST_EL_2_
:_7ZTEST_EL_2_RT_
:_CONTINUE_
ECHO %_CHOICE_%
:_EXIT_
@PAUSE
GOTO:EOF
:_7ZTEST_EL_0_
:_7ZTEST_EL_1_
:_7ZTEST_EL_2_
ECHO *********************
ECHO Some error occured.
ECHO *********************
ECHO 1, Skip the item.
ECHO 2, Enter new PASSWORD.
SET /P _CHOICE_=
IF /I %_CHOICE_% == "1" ECHO TEST
GOTO _7ZTEST_EL_2_RT_
:_7ZTEST_EL_3_
GOTO:EOF
::-------------------------------------
2020年05月09日 06点05分 1
level 6
右边加了双引,左边也要,等号两边必须完全一样
2020年05月09日 08点05分 3
1