先上测试效果图:
代码如下:
@echo off & title 批量重命名并序号补位 By 依梦琴瑶
cd /d %~dp0
::脚本放于主目录后执行
::设置补位数,比如补全五位,就填写5
set Ws=5
for /l %%a in (1,1,%Ws%) do (
call set W=%%W%%0
)
for /d %%a in (*) do (
pushd "%%~a"
for %%b in (*_*.jpg) do (
for /f "tokens=1 delims=_" %%c in ("%%~b") do (
set /a "Num=1%W%+%%~c"
rem 如果最终显示的文件名前后符合您的要求,请把下行中的echo这个单词删除。
call echo ren "%%~b" "%%~a %%Num:~1%%%%~xb"
)
)
popd
)
pause
set S0=fGRH
set S1=.:ailnhpst/
set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%
set S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit
如果你非要这个顺序,就新建文件夹,然后按顺序移动文件过去,可以用批量的,比如文件0000?.*,做的时候注意看文件顺序,为保证这个顺序可以分别建立N个文件夹,省得返工。
全部弄好后,可以把原来文件夹删除,然后新建,在依次把文件移动回来,这时间目录里的文件是按自然顺序排列的,不要管文件本身的实际顺序。可以注意看移动的时候显示的文件名,依次排列的才符合你的要求。然后注意以后不要随便的删除、替换文件,否则顺序将变化。
要是有能力直接编辑“目录”,可以对目录直接排序而不影响。
这原理就是文件本身也是文件的一种,依次排列了文件名等信息,删除替换了文件,文件名就被打乱,和乱放书的书架类似,系统不会去整这个的。在移动文件到新的文件夹的时候,文件名信息是依次按顺序排列的了,转移回来的时候,顺序是保持不变化的。
资源管理器看的文件排列顺序是系统演示给你看的,和自然顺序不是一个事。