文件按时间顺序和名称顺序批量加序号前缀重命名

写在前面

苯人近期学习时发现Typedown和vscode打开文件夹时均会按名称顺序显示(正确的是应该按时间顺序显示),以Typedown为例(vscode也许有解决办法,但我没找到)
text
实际上我希望它以修改时间顺序显示,但在本地磁盘修改排序并不能让它们在Typedown上也正确排序,于是联想到给每个文件名前加个序号前缀就能按所需显示了。上网查找批量重命名发现很多是使用第三方软件,几乎都要开昂贵的会员,遂了解到了Windows批量处理脚本

脚本使用说明

首先在要修改的文件夹下新建.txt文件,脚本写入后,将该文件名后缀修改为.bat,点击运行即可

按名称顺序加序号前缀

1
2
3
4
5
6
7
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b/a-d') do (
set /a cnt+=1
set fn=00!cnt!_!
ren "%%i" "!fn:~-3!%%i")
pause

效果如图:
text

在Typedown中效果:
text

按时间顺序加序号前缀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
setlocal enabledelayedexpansion
:: 初始化计数器
set /a b=0
:: 遍历当前目录下的所有文件,按时间顺序
for /f "delims=" %%f in ('dir /b /od *.*') do (
if not "%%f"=="%~nx0" (
set /a b+=1
:: 确保序号为两位长度,不足两位时前面补零
set "num=00!b!"
set "num=!num:~-2!"
:: 重命名文件,格式为两位序号加上文件的原始名
ren "%%f" "!num!_%%f"
echo Renamed: %%f to !num!_%%f
)
)
pause

注意 为了在Typedown里能够正确按序号显示,这里序号固定为两位长度,不够左位补零。Typedown我真的讨厌你,1之后本来应该是2,你却是10!!!!!!🤬🤬🤬

效果如图
text

text

到这就可以按序阅读啦😎

去掉文件原名第一位后加序号前缀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
setlocal enabledelayedexpansion
:: 初始化计数器
set /a b=0
:: 遍历当前目录下的所有文件,按时间顺序
for /f "delims=" %%f in ('dir /b /od *.*') do (
if not "%%f"=="%~nx0" (
set /a b+=1
:: 确保序号为两位长度,不足两位时前面补零
set "num=00!b!"
set "num=!num:~-2!"
:: 获取文件原始名去掉第一位后的部分
set "originalName=%%f"
set "modifiedName=!originalName:~1!"
:: 重命名文件,格式为两位序号加上文件原始名去掉第一位
ren "%%f" "!num!!modifiedName!"
echo Renamed: %%f to !num!_!modifiedName!
)
)
pause

效果如图:
text

有问题可以一起探讨喔😲