bat脚本中文件名传给变量无法成功

想用批处理修改文件名,但是在读文件名后,无法将之传给变量显示,
代码如下:

@echo off
set  a=30
setlocal EnableDelayedExpansion
for  %%i in (*.cfg) do (
set /A a+=1
echo %%i
set "OldName=%%i"
echo OldName=%OldName%
)
pause

那个echo %%可以将文件名输出出来,但是echo OldName却无法输出文件名,请各位大神帮忙看看,在网上搜索了许久也没有结果

echo OldName=%OldName%
->
echo "OldName="
echo %OldName%

@echo off
setlocal EnableDelayEdexpansion
set a=30

for %%i in (*.cfg) do (
set /A a+=1
echo %%i
set OldName=!%%i!
echo OldName
)
pause
记得给分