Batch file 如何将FOR命令中的变量与FOR命令外的变量进行比较?

Batch file 如何将FOR命令中的变量与FOR命令外的变量进行比较?,batch-file,for-loop,if-statement,Batch File,For Loop,If Statement,我正在开发一个基于20世纪初使用的设备的程序。当在程序的某些部分上进行测试时,部分代码并不像我想象的那样工作。下面是一些与之类似的代码: @echo off setlocal enabledelayedexpansion cls set /p ar=Type a number: :loop for /l %%a in (1,1,100) do ( set var1=%%a if !var1! equ %ar%( echo It worked got

我正在开发一个基于20世纪初使用的设备的程序。当在程序的某些部分上进行测试时,部分代码并不像我想象的那样工作。下面是一些与之类似的代码:

@echo off
setlocal enabledelayedexpansion
cls
set /p ar=Type a number:
:loop
for /l %%a in (1,1,100) do (
    set var1=%%a
    if !var1! equ %ar%(
        echo It worked
        goto pause1
    ) else (
        echo It didn't work
    )
)
:pause1
pause

这里我要做的是将“%%a”变量与FOR命令之外的变量集进行比较,但是每次我测试程序时,它都会突然从命令提示符退出。我尝试过改变命令的顺序,改变符号,但是输出是一样的。我查阅了很多参考资料,没有找到任何能解决这个特定场景的方法。你能告诉我我做错了什么,怎么做才能修复它吗?谢谢。

在%ar%和if子句的开头括号之间留出一个空格。另外,如果%%a eq%ar%将完成此项工作,您也可以避免使用set语句。感谢您指出我的错误。在进行比较之前,不要设置变量,
for/L%%a In(1,1100)do if%%a NEq%ar%(Echo It not work)Else(设置“var1=%a”。