我有一个旧程序,将文件名创建为<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程序来执行此操作。 我现在不想更改旧版程序来更改文件生成和命名逻辑。
答案 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_!
)
)