首页 > 解决方案 > 批量重命名文件,同时保留部分 rar 编号

问题描述

就像标题一样,我想批量重命名文件,但保留 rar 文件的一部分。

例子:

输出:

下面是代码的重命名部分。

SETLOCAL EnableDelayedExpansion

REM Set your Year, Month, Day variable values here.
REM They will be used for file renaming.

CD "D:\test\rename"

FOR /F "usebackq tokens=* delims=" %%A IN (`DIR "*.rar" /B /A:-D`) DO (
    REM Extract the last 2 chars of the file name.
    SET FileName=%%~nA
    SET First4=!FileName:~0,5!
    SET Last2=!FileName:~-2!

    REM Rename the file, inserting the new data.
    RENAME "%%A" "!First4!__!Last2!%%~xA"
)
ENDLOCAL

标签: batch-filerename

解决方案


这是基于我对您想要做什么的假设的示例脚本:

@Echo Off
SetLocal EnableDelayedExpansion

Set "sd=D:\test\rename"
Set "xf=.rar"

If Not Exist "%sd%\*%xf%" Exit /B
CD /D "%sd%" 2>Nul || Exit /B

Set "ds="
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined ds Set "ds=%%A%%B%%C"

For %%A In ("*%xf%") Do (Set "fn=%%~nA"
    For %%B In ("!fn!") Do (Set "fx=%%~xB"
        If /I Not "!fx:.part=!"=="%%~xB" Set "fn=%%~nB")
    Ren "%%A" "!fn:~,4!_%ds%_!fn:~-2!!fx!%xf%$")
Ren "*%xf%$" "*%xf%"

%ds%在两个下划线之间插入了年、月、日变量,意思是:

  • File-01.part1.rar将被重命名为File_20180523_01.part1.rar
  • Testing18.part2.rar将被重命名为Test_20180523_18.part2.rar
  • Archive02.rar将重命名为Arch_20180523_02.rar.

推荐阅读