本来是把一些set 命令后的部分加引号就行了,代码中有些多余部分顺便帮你去掉:
setlocal enabledelayedexpansioncd /d "%~dp0"for /f "delims=" %%a in ('dir /b/a-d') do ( set "bn=%%a" set "bn=!bn:需要删除的字符=!" if not "%%a"=="!bn!" ren "%%a" "!bn!")