为什么即使使用 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
不要在 =
周围使用空格,否则空格将成为变量名的一部分。
尝试在批处理文件中的 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
不要在 =
周围使用空格,否则空格将成为变量名的一部分。