我有以下批处理脚本应该动态生成文件名。很遗憾,我无法获得将返回值分配给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
答案 0 :(得分:3)
使用延迟变量需要您使用!Var!
语法而不是%Var%语法来引用它们。 %Var%
在读取时间仍然展开。 !Var!
在执行时扩展。 Set DelayedExpansion
只需启用对!Var!
的支持。