为什么即使使用 setlocal enabledelayedexpansion 也无法在 for 循环(批处理文件)中访问局部变量?

Why can't I access local variable in for loop (batch file) even with setlocal enabledelayedexpansion?

尝试在批处理文件中的 FOR 循环中访问自定义局部变量,我不断收到 ECHO is off.
尽管 enabledelayedexpansion 设置为 并与 !_! 一起使用 ,正如许多指南所建议的那样..

在这种情况下可能有什么问题以及应该如何执行这种技巧?

@ECHO OFF

for %%I IN (.) DO SET BatCurrPath = %%~fI
ECHO ---------------
ECHO %BatCurrPath%
ECHO ---------------

SETLOCAL ENABLEDELAYEDEXPANSION
for /d %%d IN (*.*) DO (
    SET DirFound = %%d
    ECHO !DirFound!      <==== outputs "ECHO is off"
    ECHO %%d             <==== outputs child's dirname
)
ENDLOCAL

这样试试:

@ECHO OFF

for %%I IN (.) DO SET "BatCurrPath=%%~fI"
ECHO ---------------
ECHO %BatCurrPath%
ECHO ---------------

SETLOCAL ENABLEDELAYEDEXPANSION
for /d %%d IN (*.*) DO (
    SET "DirFound=%%d"
    ECHO !DirFound!     
    ECHO %%d            
)
ENDLOCAL

不要在 = 周围使用空格,否则空格将成为变量名的一部分。