为啥即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量? [复制]
Posted
技术标签:
【中文标题】为啥即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量? [复制]【英文标题】:Why can't I access local variable in for loop (batch file) even with setlocal enabledelayedexpansion? [duplicate]为什么即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量? [复制] 【发布时间】:2021-03-03 21:38:35 【问题描述】:尝试访问批处理文件中 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
【问题讨论】:
【参考方案1】:试试这样:
@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
不要在=
周围使用空格,否则空格将成为变量名的一部分。
【讨论】:
以上是关于为啥即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使使用单个 reducer 也会调用 Partitioner
为啥 isConfiguration:compatibleWithStoreMetadata 会返回 yes,即使使用了映射模型?