如何通过批处理文件重命名具有数字后缀的文件

时间:2018-07-08 19:39:26

标签: c windows file-rename batch-rename

我有一个旧程序,将文件名创建为<Common Prefix>_<Number>.dat,并按如下升序将它们放在列表中:

A2_132.dat
A2_184.dat
A2_24.dat
A2_362.dat

但是,我需要按照用作结尾名称的数字的升序对文件进行重命名,例如132, 184, 24, 362,按照其数字值的顺序为24, 132, 184, 362,这样我可以将文件名排序为:

A2_24.dat
A2_132.dat
A2_184.dat
A2_362.dat

我认为,文件名需要重命名为:

A2_024.dat
A2_132.dat
A2_184.dat
A2_362.dat

考虑到我可能必须递归地访问所有子文件夹,如何通过Windows批处理程序或C程序来执行此操作。 我现在不想更改旧版程序来更改文件生成和命名逻辑。

1 个答案:

答案 0 :(得分:0)

  

因此误解了递归部分,只在代码中添加了...

因此,如果我对这个问题理解得很好,也许此代码“适合”您:

@echo off & cd /d "%~dp0" 

setlocal EnableDelayedExpansion

for /r "%~dp0" %%R in (*.dat) do (

    set "_ren_it=%%~fR"
    set "_to_add_0=%%~nxR"

    for /f "tokens=1,2 delims=_" %%i in ('echo/!_to_add_0!') do (

        set _j=00%%j
        set "_File_Ren_=%%~i_!_j:~-7!"
        ren "!_ren_it!" !_File_Ren_!

    )
)