【问题标题】: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

【问题讨论】:

    标签: windows for-loop batch-file cmd delayedvariableexpansion


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多