怎么批量修改文件后缀名(图文)
批量修改文件后缀名有多种方法,以下是不同操作系统和场景下的具体操作:
Windows 系统
方法一:使用 PowerShell(推荐)
powershell
# 将当前目录下所有 .txt 文件改为 .log 文件 Get-ChildItem "*.txt" | Rename-Item -NewName { [io.path]::ChangeExtension($_.Name, "log") } # 批量修改指定目录中的文件 Get-ChildItem "C:\path\to\folder\*.doc" | Rename-Item -NewName { [io.path]::ChangeExtension($_.Name, "pdf") } # 更复杂的重命名规则 Get-ChildItem "*.jpg" | ForEach-Object { $newName = $_.BaseName + ".jpeg" Rename-Item $_.Name $newName }方法二:使用 CMD 批处理
cmd
# 将所有 .txt 文件改为 .log 文件 ren *.txt *.log # 将所有 .doc 文件改为 .pdf 文件 ren *.doc *.pdf # 使用 for 循环进行更精确控制 for %i in (*.txt) do ren "%i" "%~ni.log"方法三:保存为批处理文件 (.bat)
batch
@echo off echo 正在批量修改文件后缀名... cd /d "C:\path\to\your\folder" ren *.txt *.log echo 修改完成! pausemacOS 系统
使用 Terminal 终端
bash
# 使用 mv 命令批量修改 for file in *.txt; do mv "$file" "${file%.txt}.log" done # 或者使用更简洁的方式 for f in *.txt; do mv "$f" "${f/.txt/.log}"; doneLinux 系统
使用 Bash 命令
bash
# 方法一:使用 rename 命令(如果系统支持) rename 's/\.txt$/.log/' *.txt # 方法二:使用 bash 循环 for file in *.txt; do mv "$file" "${file%.txt}.log" done # 方法三:使用 find 命令 find . -name "*.txt" -exec sh -c 'mv "$1" "${1%.txt}.log"' _ {} \;编程方式实现
Python 脚本
python
import os import glob def batch_rename_extension(directory, old_ext, new_ext): """ 批量修改文件后缀名 :param directory: 目录路径 :param old_ext: 旧后缀名(如 '.txt') :param new_ext: 新后缀名(如 '.log') """ # 确保后缀名格式正确 if not old_ext.startswith('.'): old_ext = '.' + old_ext if not new_ext.startswith('.'): new_ext = '.' + new_ext # 构造搜索模式 pattern = os.path.join(directory, "*" + old_ext) # 获取所有匹配的文件 files = glob.glob(pattern) # 批量重命名 for old_file in files: # 构造新文件名 base_name = os.path.splitext(old_file)[0] new_file = base_name + new_ext # 重命名文件 try: os.rename(old_file, new_file) print(f"已将 {old_file} 重命名为 {new_file}") except Exception as e: print(f"重命名 {old_file} 失败: {e}") print(f"共处理了 {len(files)} 个文件") # 使用示例 batch_rename_extension("/path/to/folder", ".txt", ".log")更高级的 Python 脚本
python
import os import argparse from pathlib import Path def advanced_batch_rename(directory, old_ext, new_ext, recursive=False): """ 高级批量重命名工具 :param directory: 目标目录 :param old_ext: 原始扩展名 :param new_ext: 新扩展名 :param recursive: 是否递归处理子目录 """ directory = Path(directory) # 确保扩展名格式 old_ext = old_ext if old_ext.startswith('.') else '.' + old_ext new_ext = new_ext if new_ext.startswith('.') else '.' + new_ext # 选择搜索模式 if recursive: pattern = "**/*" + old_ext files = list(directory.glob(pattern)) else: pattern = "*" + old_ext files = list(directory.glob(pattern)) print(f"找到 {len(files)} 个匹配的文件") # 确认操作 if len(files) > 0: confirm = input("确认要重命名这些文件吗?(y/N): ") if confirm.lower() != 'y': print("操作已取消") return # 执行重命名 success_count = 0 for old_file in files: try: new_file = old_file.with_suffix(new_ext) old_file.rename(new_file) print(f"✓ {old_file.name} -> {new_file.name}") success_count += 1 except Exception as e: print(f"✗ 重命名失败 {old_file.name}: {e}") print(f"\n完成!成功重命名 {success_count}/{len(files)} 个文件") # 命令行使用示例 if __name__ == "__main__": # 可以直接调用 advanced_batch_rename("./documents", "txt", "log")第三方工具推荐
Windows 工具
- Bulk Rename Utility - 功能强大的批量重命名工具
- Advanced Renamer - 支持多种重命名规则
- ReNamer - 轻量级但功能齐全
跨平台工具
- Ant Renamer - 免费开源的批量重命名工具
- File Renamer - 简单易用的图形界面工具
实际应用示例
示例1:图片格式转换后缀名
powershell
# 将所有 .jpeg 改为 .jpg Get-ChildItem "*.jpeg" | Rename-Item -NewName { [io.path]::ChangeExtension($_.Name, "jpg") }示例2:文档格式统一
bash
# Linux/macOS: 将所有 .doc 统一为 .docx for file in *.doc; do mv "$file" "${file%.doc}.docx" done示例3:日志文件轮转
cmd
# Windows: 将 .log 文件改为 .log.bak ren *.log *.log.bak注意事项
- 备份重要文件:批量操作前建议备份重要数据
- 权限检查:确保对目标文件夹有写入权限
- 路径安全:使用绝对路径避免误操作
- 测试运行:先在少量文件上测试脚本
- 确认操作:添加确认步骤避免误删文件
- 特殊字符:注意处理包含空格或特殊字符的文件名

更新时间:2025-12-17 12:47:30
