尽管EnableDelayedExpansion,但for循环中未分配变量

时间:2015-02-12 21:39:53

标签: batch-file for-loop return-value

我有以下批处理脚本应该动态生成文件名。很遗憾,我无法获得将返回值分配给filename的功能。每个echo都返回一个空行。

@echo off
setlocal EnableDelayedExpansion

for /l %%i in (0,1,1) do (
    call :create_filename %%i filename
    echo(!%filename%!
)
pause

:create_filename
    set "base=My test file"
    if %1 GTR 0 set "base=%base% (%1)"
    set "%~2=%base%.txt"
GOTO :eof

1 个答案:

答案 0 :(得分:3)

使用延迟变量需要您使用!Var!语法而不是%Var%语法来引用它们。 %Var%在读取时间仍然展开。 !Var!在执行时扩展。 Set DelayedExpansion只需启用对!Var!的支持。