如何将文件夹内所有文件按每秒递增规则重命名为HH_MM_SS格式
批量按每秒递增规则重命名文件为HH_MM_SS格式
你可以直接根据自己的操作系统选择对应脚本运行,最终重命名效果和示例一致:
00_59_57.jpg
00_59_58.jpg
00_59_59.jpg
01_00_00.jpg
脚本默认从你设置的起始时间开始,按文件排序顺序依次给每个文件分配时间,后一个文件比前一个文件时间加1秒,自动保留原文件后缀。
Windows 系统(PowerShell 方案)
- 打开存放目标文件的文件夹,在顶部地址栏输入
powershell后按回车,会直接弹出定位到当前路径的PowerShell终端 - 修改下方脚本里的起始时间参数(示例默认从00时59分57秒开始),把脚本粘贴到终端回车即可运行
- 默认按文件名字典序排序分配时间,如果需要按文件修改时间排序,把脚本里的
Sort-Object Name替换为Sort-Object LastWriteTime即可
# 配置起始时间:小时、分钟、秒,按需修改数值 $startTime = Get-Date -Hour 0 -Minute 59 -Second 57 Get-ChildItem -File | Where-Object { $_.Name -ne $MyInvocation.MyCommand.Name } | Sort-Object Name | ForEach-Object -Begin { $currentTime = $startTime } -Process { $newName = $currentTime.ToString("HH_mm_ss") + $_.Extension Rename-Item -Path $_.FullName -NewName $newName $currentTime = $currentTime.AddSeconds(1) }
macOS / Linux 系统(Bash 方案)
- 打开终端,通过
cd 你的文件夹路径命令进入目标文件所在目录 - 修改下方脚本里的起始时、分、秒参数,粘贴到终端回车即可运行
- 默认按文件名字典序排序分配时间,如果需要按文件修改时间排序,把脚本里的
for file in *替换为for file in $(ls -1tr)即可
# 配置起始时间:小时、分钟、秒,按需修改数值 start_h=0 start_m=59 start_s=57 current_s=$((start_h*3600 + start_m*60 + start_s)) for file in *; do if [ -f "$file" ] && [ "$file" != "${0##*/}" ]; then ext="${file##*.}" h=$((current_s / 3600)) m=$(((current_s % 3600) / 60)) s=$((current_s % 60)) new_name=$(printf "%02d_%02d_%02d.%s" $h $m $s $ext) mv -n "$file" "$new_name" current_s=$((current_s + 1)) fi done
注意事项
- 运行脚本前建议先备份原文件,避免重命名规则不符合预期导致文件混乱
- 时间累加超过23:59:59时会自动按24小时制进位,从00:00:00继续计数
- 脚本自带重名不覆盖逻辑,不会因为文件名重复覆盖已有文件
内容的提问来源于stack exchange,提问作者Blurry bay
相关产品推荐
相关产品推荐

