<
批处理 for与set问题 延迟环境变量扩展
>
上一篇

Git filter Branch 在历史 commit 彻底删除大文件
下一篇

Windows 批处理 bat 参考

问题

在for循环里,set的变量无效?

例子

for /l %%i in (1,1,5) do (

    set var=%%i
    echo %var%
)

pause

原因

什么是延迟环境变量扩展呢?

cmd执行bat的机制:cmd是读一句执行一句,何谓一句?


解决

启用”延迟环境变量扩展”

Setlocal enabledelayedexpansion

然后将 %var% 替换成 !var!

例子

@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

for /l %%i in (1,1,5) do (

    set var=%%i
    echo !var!
)

pause
Top
Foot