变量不在循环中取值[批处理]

时间:2015-01-30 14:02:48

标签: windows batch-file

我正在尝试执行以下批处理,但无法理解varvpccidr

的行为
set filetemp=temp.txt
    for /F "delims=" %%a in (%filetemp%) do (
            set  varvpccidr=%%a
            echo [%%a] {%varvpccidr%] 
    )   

输出

  

[172.25.243.0/25] []

temp.txt包含:

  

172.25.243.0/25

1 个答案:

答案 0 :(得分:4)

您需要使用延迟扩展:

setlocal enableextensions enabledelayedexpansion

set filetemp=temp.txt
for /F "delims=" %%a in (%filetemp%) do (
        set  varvpccidr=%%a
        echo [%%a] [!varvpccidr!] 
)   

endlocal

它不能正常工作的原因与评估for命令时的事实有关(它是整个for到右括号的四行,varvpccidr还没有值。

通过使用延迟扩展,您可以将变量的扩展推迟到最新的可能点echo行本身。