本文目录导读:

我来为您介绍几种批量重命名文件的方法,适用于不同操作系统。
Windows 系统
PowerShell 脚本
# 示例:给所有jpg文件添加前缀
Get-ChildItem -Path "C:\YourFolder" -Filter "*.jpg" | ForEach-Object {
$newName = "prefix_" + $_.Name
Rename-Item -Path $_.FullName -NewName $newName
}
# 示例:替换文件名中的文字
Get-ChildItem -Path "C:\YourFolder" | ForEach-Object {
$newName = $_.Name -replace "oldtext", "newtext"
Rename-Item -Path $_.FullName -NewName $newName
}
# 示例:按序号重命名
$i = 1
Get-ChildItem -Path "C:\YourFolder" -Filter "*.jpg" | ForEach-Object {
$newName = "Photo_{0:D4}.jpg" -f $i
Rename-Item -Path $_.FullName -NewName $newName
$i++
}
批处理脚本 (.bat)
@echo off
setlocal enabledelayedexpansion
:: 添加前缀
set count=1
for %%f in (*.txt) do (
ren "%%f" "prefix_%%f"
)
:: 序号重命名
set count=1
for %%f in (*.jpg) do (
set "newname=File_!count!.jpg"
ren "%%f" "!newname!"
set /a count+=1
)
macOS/Linux 系统
Shell 脚本
#!/bin/bash
# 添加后缀
for file in *.txt; do
mv "$file" "new_${file}"
done
# 批量替换文件名中的文字
for file in *; do
newname=$(echo "$file" | sed 's/old/new/g')
mv "$file" "$newname"
done
# 序号重命名
count=1
for file in *.jpg; do
mv "$file" "$(printf "Photo_%04d.jpg" $count)"
((count++))
done
使用 rename 命令
# 安装 (Ubuntu/Debian) sudo apt install rename # 替换文件扩展名 rename 's/\.txt$/.md/' *.txt # 添加前缀 rename 's/^/prefix_/' *.jpg # 大小写转换 rename 'y/a-z/A-Z/' *.jpg
Python 脚本(跨平台)
基础批量重命名
import os
folder_path = r'C:\YourFolder' # 修改为你的文件夹路径
# 添加前缀
prefix = 'new_'
for filename in os.listdir(folder_path):
if os.path.isfile(os.path.join(folder_path, filename)):
new_name = prefix + filename
os.rename(
os.path.join(folder_path, filename),
os.path.join(folder_path, new_name)
)
# 按序号重命名
folder = 'C:\\YourFolder'
extensions = ['.jpg', '.png']
for i, filename in enumerate(os.listdir(folder), 1):
if any(filename.endswith(ext) for ext in extensions):
ext = os.path.splitext(filename)[1]
new_name = f"Image_{i:04d}{ext}"
os.rename(
os.path.join(folder, filename),
os.path.join(folder, new_name)
)
高级功能脚本
import os
import re
from datetime import datetime
def batch_rename(folder_path, pattern, replacement):
"""
批量重命名文件
:param folder_path: 文件夹路径
:param pattern: 要替换的模式(正则表达式)
:param replacement: 替换后的内容
"""
for filename in os.listdir(folder_path):
if os.path.isfile(os.path.join(folder_path, filename)):
# 使用正则替换
new_name = re.sub(pattern, replacement, filename)
if new_name != filename:
os.rename(
os.path.join(folder_path, filename),
os.path.join(folder_path, new_name)
)
print(f"Renamed: {filename} -> {new_name}")
# 使用示例
batch_rename(r'C:\YourFolder', r'\s+', '_') # 替换空格为下划线
使用专门软件
Windows:
- Advanced Renamer(免费)
- Bulk Rename Utility(免费)
- Total Commander(付费)
macOS:
- Name Mangler(付费)
- Renamer(免费)
- A Better Finder Rename(付费)
实际应用示例
清理照片文件名
# PowerShell:批量清理照片文件名
$path = "C:\Photos"
Get-ChildItem $path -Include *.jpg, *.png |
ForEach-Object {
$newName = $_.Name -replace 'IMG_\d+_', '' -replace '[^\w\.]', '_'
Rename-Item -Path $_.FullName -NewName $newName -WhatIf
}
提示:
- 在执行批量操作前,先用
-WhatIf(PowerShell)测试 - 建议先备份文件
- 使用正则表达式时要小心,避免误改
根据您的具体需求,选择最适合的方法,如果需要更复杂的重命名规则,请告诉我具体需求,我可以提供定制脚本。