DOS批处理,怎么将命令输入重定向到变量中

DOS批处理,如何将命令输入重定向到变量中?
如题,比如在批处理中有
dir
默认是输出到屏幕
dir > a.txt
可以输出到文件
但是如何输出到变量?或者通过中间文件,可以将这个结果保存到某个变量里?
谢谢

------解决方案--------------------
环境变量中不能包含换行、回车等字符,所以只能单行,而且windows中环境变量最大长度有32767字符的限制,在批处理中限制不能超过最大命令行长度(2047或者8191,取决于操作系统)。
所以你要把一个多行文件原样保存到某个环境变量中是不可能的。

------解决方案--------------------
这是可以的:

dir /b /-p >filelist.txt
for /F "delims=
------解决方案--------------------
" %%i in (filelist.txt) do (
if /I "%%~xi"==".exe" (
set filename=%%i
goto done
)
)
:done
echo %filename%
set filename=
del filelist.txt