批处理文件中的以下命令将返回错误
“
1!==1
此时出乎意料”
@echo off
setlocal enabledelayedexpansion
set num1=0
set/p "pass=>"
:start
set/a num1=%num1%+1
set/a num2=%num1%-1
if !pass:~%num2%,1!==1 set pass%num1%=1& goto start
对于每一位数字,最后一行重复一次,==1
被替换。
答案 0 :(得分:0)
您应该为if命令使用临时变量,如下所示:
@echo off
setlocal enableDelayedExpansion
set num1=0
set/p "pass=>"
:start
set/a num1=%num1%+1
set/a num2=%num1%-1
set "temppass=!pass:~%num2%,1!"
if [%temppass%]==[1] echo set pass%num1%=1& goto start
pause
if中的暂停和回显是出于调试目的而应该删除
答案 1 :(得分:0)
由于你没有说你输入的是“通过”,我们猜测。
您的if
命令应为
if "!pass:~%num2%,1!"=="1" set pass%num1%=1& goto start
确保运算符==
的两边都是非空字符串。
这对你的逻辑缺陷没有帮助,但它会治愈错误报告。你没有说清楚你想要达到的目标,除此之外......谁知道呢?