我很难理解批处理文件本地化的工作原理。这是一个例子来证明我的困惑
@echo off
set x=5
set y=1
setlocal enabledelayedexpansion
if %y% GEQ 1 (
set x=6
echo %x%
echo !x!
)
echo %x%
endlocal
echo %x%
这会打印,5 6 6 5
如果我删除 IF 语句,它会打印,6 6 6 5
真是一团糟!为什么会这样?在 Linux bash 文件中,我确切地知道会发生什么,但在这里不知道。请向我解释每个打印语句中发生了什么,以及最好的方法是为在 IF 块中修改的变量编码。
我不得不使用 setlocal 来解决另一个问题
@echo off
set x=5
set y=1
if %y% GEQ 1 (
set x=6
echo %x%
)
echo %x%
5 6
尽管我的期望是这个打印6 6
。然后我了解了 setlocal 来解决这个问题,这现在是另一个令人头疼的问题。