尽管启用了 EnableDelayedExpansion,但未在 for 循环中分配变量
variable is not assigned in for loop despite EnableDelayedExpansion
我有以下批处理脚本,可以动态生成文件名。不幸的是,我无法获得将 return 值分配给 filename
的函数。每个 echo return 都是一个空行。
@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
使用延迟变量需要您使用 !Var!
语法而不是 %Var% 语法来引用它们。 %Var%
在读取时保持扩展。 !Var!
在执行时展开。 Set DelayedExpansion
刚刚打开对 !Var!
的支持。
我有以下批处理脚本,可以动态生成文件名。不幸的是,我无法获得将 return 值分配给 filename
的函数。每个 echo return 都是一个空行。
@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
使用延迟变量需要您使用 !Var!
语法而不是 %Var% 语法来引用它们。 %Var%
在读取时保持扩展。 !Var!
在执行时展开。 Set DelayedExpansion
刚刚打开对 !Var!
的支持。