请问 我这个批处理命令 call 一个标签后 为什么无法获取标签里面设置的变量

@echo off

call:chooseFile
echo 获取选择的文件名字
echo %chosedFile%
pause
goto :eof


REM 选取当前目录的MP4文件
:chooseFile
echo ---请选择文件---
echo.
echo 文件名------变量名
set n=0
setlocal enabledelayedexpansion
for  %%i in (./*.mp4) do (
    set /a n+=1
    set "file!n!=%%i"
)
for /f "tokens=1* delims==" %%a in ('set file') do (
echo %%b    %%a
)
echo.
echo 共有%n%个mp4文件(夹)
echo.
set /p chosedFile=请输入变量名:
set chosedFile=!%chosedFile%!
echo 变量名对应的文件(夹)是:%chosedFile%
goto :eof

call 一个标签后 为什么无法获取标签里面设置的变量chosedFile的值,但是我试过普通的call里面直接设置的变量是可以获取的。