You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

按文件夹独立序号批量重命名文件的问题求助

嘿,这个问题我熟!你需要的是每个文件夹独立重置编号,而不是全局连续递增对吧?下面给你几个不同平台的实用解决方案,挑你顺手的用就行:

方案1:PowerShell 脚本(Windows 推荐)

这个脚本会遍历你指定的根目录下所有子文件夹,在每个文件夹里单独从1开始给文件编号重命名,完全不会跨文件夹连续:

$rootPath = "你的根文件夹路径"  # 把这里替换成你的实际路径,比如"C:\MyFiles\AllFolders"

Get-ChildItem -Path $rootPath -Directory | ForEach-Object {
    $folderPath = $_.FullName
    $counter = 1  # 进入每个文件夹时重置计数器
    # 如果你只想处理特定类型文件,比如只改图片,就加 -Filter *.jpg
    Get-ChildItem -Path $folderPath -File | ForEach-Object {
        # {0:D3}表示3位补零的编号,比如001、002,改成D2就是两位,D1就是普通数字
        $newName = "{0:D3}_{1}" -f $counter, $_.Name
        Rename-Item -Path $_.FullName -NewName $newName -Force
        $counter++
    }
    Write-Host "搞定了文件夹:$folderPath 的文件编号!"
}

小提示:运行前记得先在测试文件夹里试一遍,确认效果没问题再批量操作哦。

方案2:Batch 命令脚本(Windows CMD 可用)

要是你习惯用命令提示符,这个脚本也能轻松实现需求:

@echo off
setlocal enabledelayedexpansion
set "rootPath=你的根文件夹路径"  # 替换成实际路径

for /d %%d in ("%rootPath%\*") do (
    set "counter=1"  # 每个文件夹重置计数器
    for %%f in ("%%d\*") do (
        set "num=00!counter!"
        set "num=!num:~-3!"  # 这里控制编号位数,~-2就是两位补零
        ren "%%f" "!num!_%%~nxf"
        set /a counter+=1
    )
    echo 已完成文件夹:%%d 的编号
)
endlocal
pause
方案3:Python 脚本(跨平台通用)

如果需要在macOS、Linux或者Windows上都能用,Python脚本是最佳选择,兼容性拉满:

import os

root_path = "你的根文件夹路径"  # 替换成你的实际路径

# 遍历根目录下的所有子文件夹
for folder_name in os.listdir(root_path):
    folder_path = os.path.join(root_path, folder_name)
    if not os.path.isdir(folder_path):
        continue  # 跳过不是文件夹的项目
    
    counter = 1  # 进入文件夹就重置编号
    # 先把文件按名称排序,确保编号顺序稳定(可选,但推荐)
    files = sorted([f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))])
    
    for file_name in files:
        file_path = os.path.join(folder_path, file_name)
        # :03d 表示3位补零编号,改成02d就是两位,去掉0就是普通数字
        new_name = f"{counter:03d}_{file_name}"
        new_file_path = os.path.join(folder_path, new_name)
        os.rename(file_path, new_file_path)
        counter += 1
    
    print(f"完成文件夹:{folder_path} 的文件编号")

小提醒:如果需要过滤特定文件类型,比如只处理PDF,就在files = sorted([f ...])里加个判断:if os.path.isfile(...) and f.endswith('.pdf')

额外注意事项
  • 所有脚本都建议先在测试文件夹里验证效果,避免误改重要文件
  • 如果你的文件夹里还有嵌套子文件夹,上面的脚本只处理一级子文件夹的文件;要是需要递归处理所有嵌套文件夹,可以修改遍历逻辑(比如Python用os.walk,PowerShell加-Recurse但调整计数器重置时机)
  • 要是文件夹里有重复文件名,重命名可能会报错,建议提前整理好原始文件的名称

内容的提问来源于stack exchange,提问作者John Adam1

火山引擎 最新活动