我有一个函数,它将创建一个带有时间戳的目录,但是当我尝试返回创建的目录时,我得到一个空值 这是函数
:createdatetime
SETLOCAL ENABLEEXTENSIONS
echo %1
cd C:\somefolder
set hh=%time:~-11,2%
set /a hh=%hh%+100
set hh=%hh:~1%
set mydir=%date:~10,4%-%date:~4,2%-%date:~7,2%-%hh%-%time:~3,2%-%time:~6,2%
set globalvar=try_%1_%mydir%
mkdir try_%1_%mydir%
set %~2=try_%1_%mydir%
echo %globalvar%
goto:eof
这就是我的称呼方式 call:createdatetime %% i var2 echo%var2% 但即使在所需文件夹中创建了目录,我得到的只是一个空白值 请让我知道我错过了什么。 提前感谢您的帮助
答案 0 :(得分:0)
你的函数的goto:eof
意味着一个endlocal。
然后丢弃局部变量。
要传回一个变量,你必须在与明确的endlocal命令相同的行/上下文中使用set命令。
:createdatetime
SETLOCAL ENABLEEXTENSIONS
echo %1
cd C:\somefolder
set hh=%time:~-11,2%
set /a hh=%hh%+100
set hh=%hh:~1%
set mydir=%date:~10,4%-%date:~4,2%-%date:~7,2%-%hh%-%time:~3,2%-%time:~6,2%
set globalvar=try_%1_%mydir%
mkdir try_%1_%mydir%
endlocal & set %~2=try_%1_%mydir%
goto:eof