Batch file 尽管启用了EnableDelayedExpansion,但未在for循环中分配变量
我有下面的批处理脚本,应该可以动态生成文件名。不幸的是,我无法让函数为Batch file 尽管启用了EnableDelayedExpansion,但未在for循环中分配变量,batch-file,for-loop,return-value,Batch File,For Loop,Return Value,我有下面的批处理脚本,应该可以动态生成文件名。不幸的是,我无法让函数为filename指定返回值。每个回音返回一条空行 @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" i
filename
指定返回值。每个回音返回一条空行
@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%
在读取时保持展开状态<代码>!瓦尔代码>在执行时展开Set DelayedExpansion
只需打开对的支持!瓦尔代码> 该死。这么简单。谢谢