本文目录导读:

是的,有很多实用脚本可以批量重命名文件,以下是几种常见且实用的方法:
Python脚本(最灵活)
import os
def batch_rename(path, prefix="", suffix="", replace_old="", replace_new=""):
for filename in os.listdir(path):
old_path = os.path.join(path, filename)
if os.path.isfile(old_path):
new_name = filename
if prefix:
new_name = prefix + new_name
if suffix:
name, ext = os.path.splitext(new_name)
new_name = name + suffix + ext
if replace_old:
new_name = new_name.replace(replace_old, replace_new)
new_path = os.path.join(path, new_name)
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
# 使用示例
batch_rename("./images", prefix="2024_", suffix="_v2", replace_old="old", replace_new="new")
批量添加编号
import os
def add_numbers(path, start=1, digit=3, position="prefix"):
"""
position: "prefix" 或 "suffix"
"""
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
files.sort()
for i, filename in enumerate(files, start):
name, ext = os.path.splitext(filename)
num = str(i).zfill(digit)
if position == "prefix":
new_name = f"{num}_{filename}"
else:
new_name = f"{name}_{num}{ext}"
os.rename(
os.path.join(path, filename),
os.path.join(path, new_name)
)
print(f"{filename} -> {new_name}")
add_numbers("./photos", start=1, digit=4, position="prefix")
正则表达式替换
import os
import re
def regex_rename(path, pattern, replacement):
for filename in os.listdir(path):
old_path = os.path.join(path, filename)
if os.path.isfile(old_path):
new_name = re.sub(pattern, replacement, filename)
if new_name != filename:
new_path = os.path.join(path, new_name)
os.rename(old_path, new_path)
print(f"{filename} -> {new_name}")
# 示例:去掉文件名中的空格和特殊字符
regex_rename("./files", r'[\s\(\)\[\]]', '_')
提取日期信息重命名
import os
from datetime import datetime
def rename_by_date(path):
for filename in os.listdir(path):
old_path = os.path.join(path, filename)
if os.path.isfile(old_path):
# 获取文件修改时间
timestamp = os.path.getmtime(old_path)
date_str = datetime.fromtimestamp(timestamp).strftime("%Y%m%d")
name, ext = os.path.splitext(filename)
new_name = f"{date_str}_{name}{ext}"
os.rename(old_path, os.path.join(path, new_name))
print(f"{filename} -> {new_name}")
rename_by_date("./documents")
批量转换文件扩展名
import os
import glob
def change_extension(path, old_ext, new_ext):
for file_path in glob.glob(os.path.join(path, f"*.{old_ext}")):
name, _ = os.path.splitext(file_path)
new_file = f"{name}.{new_ext}"
os.rename(file_path, new_file)
print(f"{os.path.basename(file_path)} -> {os.path.basename(new_file)}")
change_extension("./data", "txt", "csv")
使用命令行工具(Windows)
PowerShell脚本:
# 批量添加前缀
Get-ChildItem "C:\path\to\files" -File | ForEach-Object {
Rename-Item $_ -NewName ("prefix_" + $_.Name)
}
# 批量替换文件名中的文字
Get-ChildItem "C:\path\to\files" -File |
Where-Object { $_.Name -match "oldtext" } |
ForEach-Object {
$newName = $_.Name -replace "oldtext", "newtext"
Rename-Item $_ -NewName $newName
}
Linux/macOS bash脚本
#!/bin/bash
# 批量添加序号
i=1
for file in *.jpg; do
mv "$file" "$(printf "%03d_$file" $i)"
((i++))
done
# 批量替换
for file in *.txt; do
mv "$file" "${file//old/new}"
done
使用建议
- 先测试:在子集上测试脚本
- 备份:重要文件先备份
- 打印日志:记录重命名前后的对比
- 使用try/except:处理异常情况
这些脚本可以灵活组合使用,满足各种批量重命名需求,如果需要更复杂的重命名逻辑,可以进一步定制。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播