写在前面
苯人近期学习时发现Typedown和vscode打开文件夹时均会按名称顺序显示(正确的是应该按时间顺序显示),以Typedown为例(vscode也许有解决办法,但我没找到)
实际上我希望它以修改时间顺序显示,但在本地磁盘修改排序并不能让它们在Typedown上也正确排序,于是联想到给每个文件名前加个序号前缀就能按所需显示了。上网查找批量重命名发现很多是使用第三方软件,几乎都要开昂贵的会员,遂了解到了Windows批量处理脚本
脚本使用说明
首先在要修改的文件夹下新建.txt文件,脚本写入后,将该文件名后缀修改为.bat,点击运行即可
按名称顺序加序号前缀
@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
效果如图:
在Typedown中效果:
按时间顺序加序号前缀
@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!!!!!!🤬🤬🤬
效果如图
到这就可以按序阅读啦😎
去掉文件原名第一位后加序号前缀
@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
效果如图:
有问题可以一起探讨喔😲