试试这个?
如果文件内容不包含"开放分类"这几个字会出错,确认无误后请把最后一行(echo ren %1 "!dos%m%!.txt")前的"echo"去掉.
@echo off
Setlocal Enabledelayedexpansion
for %%i in (*.txt) do call :ren_ "%%i"
pause&goto :eof
:ren_
for /f "tokens=1* delims=:" %%a in ('findstr /n .* %1') do (set "dos%%a=%%b")
for /f "tokens=1 delims=:" %%c in ('findstr /n 开放分类 %1') do (set /a "m=%%c-1")
echo ren %1 "!dos%m%!.txt"