使用字符串操作和变量延迟扩展

时间:2015-12-09 02:10:28

标签: batch-file

批处理文件中的以下命令将返回错误

  

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被替换。

2 个答案:

答案 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

确保运算符==的两边都是非空字符串。

这对你的逻辑缺陷没有帮助,但它会治愈错误报告。你没有说清楚你想要达到的目标,除此之外......谁知道呢?