脚本如何批量修改文件夹名称

wen 实用脚本 31

本文目录导读:

脚本如何批量修改文件夹名称

  1. 重要提示
  2. 方案一:Windows 批处理脚本 (.bat)
  3. 方案二:macOS / Linux 终端脚本 (Shell)
  4. 方案三:Python 脚本(跨平台,最灵活)
  5. 方案四:图形化工具(无代码)
  6. 总结建议

重要提示

在运行任何批量修改脚本之前,请务必备份您的文件夹或在测试目录中先试运行,以防误操作导致数据丢失。


Windows 批处理脚本 (.bat)

使用 Windows 自带的命令提示符或 PowerShell 脚本。

cmd 批处理(简单替换)

场景:将所有文件夹名称中的 “旧词” 替换为 “新词”。

@echo off
setlocal enabledelayedexpansion
set "old=旧词"
set "new=新词"
for /d %%i in (*) do (
    set "folder=%%i"
    set "newFolder=!folder:%old%=%new%!"
    if not "!folder!"=="!newFolder!" (
        ren "%%i" "!newFolder!"
        echo 已修改: %%i -^> !newFolder!
    )
)
echo 完成!
pause

用法:将上述代码复制到记事本,保存为 rename.bat,放在目标文件夹上级目录双击运行。

PowerShell 脚本 (.ps1) —— 更强大

场景:添加前缀/后缀、替换、删除、按规则重命名。

# 1. 批量添加前缀 "Project_"
Get-ChildItem -Directory | Rename-Item -NewName { "Project_" + $_.Name }
# 2. 批量删除 "temp_" 前缀
Get-ChildItem -Directory | Where-Object { $_.Name -like "temp_*" } | 
    Rename-Item -NewName { $_.Name -replace "^temp_", "" }
# 3. 按正则表达式修改(例如将括号替换为横杠)
Get-ChildItem -Directory | Rename-Item -NewName { $_.Name -replace '\(', '-' -replace '\)', '' }
# 4. 将所有文件夹名改为小写(加 -WhatIf 先预览)
Get-ChildItem -Directory | Rename-Item -NewName { $_.Name.ToLower() } -WhatIf

用法:在目标文件夹中,右键 -> 在 Windows 终端 / PowerShell 中打开,粘贴上述命令执行。


macOS / Linux 终端脚本 (Shell)

利用 bashzshrenamemv 命令。

使用 rename 命令(需先安装)

安装brew install rename (macOS) / sudo apt install rename (Ubuntu/Debian)

# 将所有 "旧名" 替换为 "新名"
rename 's/旧名/新名/' */
# 添加前缀 "2025_"
rename 's/^/2025_/' */
# 添加后缀 "_backup"
rename 's/$/_backup/' */
# 删除文件夹名中的空格(用下划线替换)
rename 's/ /_/g' */

使用 find + for 循环(通用性最强)

# 在文件夹名前添加 "archive_"
for dir in */; do
    mv "$dir" "archive_$dir"
done
# 删除文件夹名中的 "-副本" 后缀
for dir in */; do
    newname=$(echo "$dir" | sed 's/-副本//g')
    if [ "$dir" != "$newname" ]; then
        mv "$dir" "$newname"
    fi
done

Python 脚本(跨平台,最灵活)

适合复杂逻辑,根据文件内容、日期、序号批量重命名。

import os
# 要修改的文件夹路径
folder_path = "."  # 当前目录,也可以改为绝对路径
# 示例1:批量添加 "已整理_" 前缀
for foldername in os.listdir(folder_path):
    full_path = os.path.join(folder_path, foldername)
    if os.path.isdir(full_path):  # 确保是文件夹
        new_name = "已整理_" + foldername
        os.rename(full_path, os.path.join(folder_path, new_name))
        print(f"已修改: {foldername} -> {new_name}")
# 示例2:按创建日期重命名(格式:YYYYMMDD_原名称)
import datetime
for foldername in os.listdir(folder_path):
    full_path = os.path.join(folder_path, foldername)
    if os.path.isdir(full_path):
        # 获取文件夹创建时间
        timestamp = os.path.getctime(full_path)  # Linux用getmtime
        date_str = datetime.datetime.fromtimestamp(timestamp).strftime("%Y%m%d")
        new_name = f"{date_str}_{foldername}"
        os.rename(full_path, os.path.join(folder_path, new_name))
# 示例3:批量编号(001, 002...)
count = 1
for foldername in os.listdir(folder_path):
    full_path = os.path.join(folder_path, foldername)
    if os.path.isdir(full_path):
        new_name = f"{count:03d}_{foldername}"  # 3位数字编号
        os.rename(full_path, os.path.join(folder_path, new_name))
        count += 1

用法:将代码保存为 rename.py,在终端运行 python rename.py


图形化工具(无代码)

如果不想写脚本,推荐以下免费工具:

  • WindowsPowerToys (PowerRename) (微软官方) 或 Bulk Rename Utility (功能极强)
  • macOSName ManglerRenamer
  • 跨平台Advanced RenamerAnt Renamer

总结建议

需求 推荐方案
Windows 简单替换 .bat 批处理
Windows 灵活替换 PowerShell
macOS/Linux 常用 rename 命令或 Shell 循环
复杂逻辑/跨平台 Python 脚本
一次使用/不熟代码 图形化工具 (PowerToys, Bulk Rename)

需要我帮您针对特定场景(如:统一加日期、清除特殊字符、按序号排序)定制一个具体脚本吗?

抱歉,评论功能暂时关闭!