DOS批处理for循环的时候 为何不能正确显示变量?该怎么处理

DOS批处理for循环的时候 为何不能正确显示变量?
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%i in (*.*) do (
 setlocal enabledelayedexpansion
 set var =%%i
 echo %%i
 echo !var:~2,2!
)
pause




如上代码 我只是想遍历目录中的文件 截取文件名的一部分来显示  

假设文件名是 12345.txt

这个批处理处理的结果是
12345.txt
~2,2



不应该阿 我想输出的是截取后的值阿..
应该是
12345.txt
34


求高手指点

------解决方案--------------------
set var =%%i
-->
set var=%%i