2015-02-12 6 views
1

У меня есть следующий пакетный скрипт, который должен генерировать имена файлов «на лету». К сожалению, я не могу заставить функцию присвоить возвращаемое значение filename. Каждое эхо возвращает пустую строку.переменная не назначается в цикле for несмотря на EnableDelayedExpansion

@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 

ответ

3

Использование отложенной переменные требуют, чтобы обратиться к ним с !Var! синтаксиса, а не% Var синтаксиса%. %Var% остается расширенным во время чтения. !Var! расширены во время выполнения. Set DelayedExpansion просто включает поддержку для !Var!.

+0

Черт. Так просто. Благодаря! –

Смежные вопросы