CODE: [Copy to clipboard]
@echo off
:: 本段代码为重命名c:\movie目录下文件名为(cb*数字.rmvb)的文件.
::
:: 重命名的规律是提取匹配的.rmvb文件中的数字, 然后把提取到的数字给文件取名为cb_数字.rmvb的格式.
::
:: 注意! 只提取匹配文件中的数字, 其他字符将被过滤. 如果文件名不存在数字将不做处理.
::
:: 请慎用此段代码!
set /a how=0
set /a how_=0
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /a-d /b "c:\movie\cb*.rmvb"') do (
set filename=%%i
set filename_=!filename:~0,-5!:
set name=
call :go
)
(
echo ========================
echo.
echo 共处理文件个数:!how!
echo.
echo 未处理文件个数:!how_!
echo.
echo ========================
)>>unsettled.txt
cls
echo 所有rmvb类型的文件已处理完毕, 请查看日志.
echo.
pause
start unsettled.txt
exit
:go
set num=!filename_:~0,1!
if not "!num!"==":" (
set term=
for %%a in (0 1 2 3 4 5 6 7 8 9) do (
if "!num!"=="%%a" (
set filename_=!filename_:~1!
set name=!name!%%a
set term=
goto go
)
)
if "!term!"=="" set filename_=!filename_:~1!
goto go
)
if not "!name!"=="" (
if exist "c:\movie\cb_!name!.rmvb" (
cls
echo cb_!name!.rmvb文件已存在, 没执行重命名. 系统会将未做处理的文件生成日志unsettled.txt
echo c:\movie\!filename!>>unsettled.txt
set /a how_+=1
pause
) else (
ren "c:\movie\!filename!" cb_!name!.rmvb
set /a how+=1
)
)
goto :eof
本段代码具有更大的灵活性, 楼主可以在FOR语句中加入需要匹配的字符或字符串, 这样在重命名文件时这些字符都将保留下来.