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

标签 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 程序来完成此操作。 我暂时不想更改旧程序来更改文件生成和命名逻辑。

最佳答案

misunderstood the recursive part so, only added in code...

所以,如果我很好地理解了这个问题,也许这段代码“适合”你:

@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_!

    )
)

关于c - 如何通过批处理文件重命名具有数字后缀的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51235418/

相关文章:

python - windows 不允许我替换文件

c - atoi 是标准函数。但 itoa 不是。为什么?

c++ - 结构对齐填充、填充的最大尺寸和结构成员的顺序

c - pthreads 向特定线程发出信号

c++ - SetWindowsHookEx() 监控所有线程 : Must the hook procedure be located in a DLL?

java - renameTo() 不适用于重命名图像并返回 false

c - Linux 中 C 中的消息框

c++ - 在所有操作系统中应用文件统计(统计的结构类型)

ruby - vim-foreplay 在 Ruby 1.9 上真的很慢,但在 Windows 上用 Ruby 1.8 很快

Windows 上的 Git : Can't switch branch after renaming a file (only changed case)