批处理,变量延迟的问题,求解

@ECHO %DBG% OFF
 SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,4) do (
FOR /F "TOKENS=*" %%i IN (a.txt) DO (SET /A h+=1 & SET r!h!=%%i)
 SET /A s=%RANDOM%%%%h%+1
echo !r%s%!

)

pause>nul
这是小弟在网上东拼西凑得出的代码, 主要作用,随机从提取txt中4行或者4段内容。

请达人指教:1.为什么运行的时候,显示echo 处于关闭状态,怎样解决?
2. 怎样实现 变量的延迟,具体操作?
非常的感谢,

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do set/a n+=1&set "#!n!=%%a"
for /l %%a in (1,1,4) do (
    set/a r=!random!%%n+1
    for %%i in (!r!) do echo,!#%%i!
)
pause>nul

温馨提示:答案为网友推荐,仅供参考