本文目录导读:

Python脚本实现
基础版本 - 按序号重命名
import os
def batch_rename(path, prefix="file", start_num=1):
files = os.listdir(path)
for i, filename in enumerate(files, start=start_num):
# 获取文件扩展名
ext = os.path.splitext(filename)[1]
# 新文件名
new_name = f"{prefix}_{i}{ext}"
# 完整路径
old_path = os.path.join(path, filename)
new_path = os.path.join(path, new_name)
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
# 使用示例
batch_rename("./images", "photo", 1)
高级版本 - 支持多种模式
import os
import re
class FileRenamer:
def __init__(self, path):
self.path = path
def add_prefix(self, prefix):
"""添加前缀"""
for filename in os.listdir(self.path):
new_name = f"{prefix}{filename}"
os.rename(
os.path.join(self.path, filename),
os.path.join(self.path, new_name)
)
def replace_text(self, old_text, new_text):
"""替换文本"""
for filename in os.listdir(self.path):
if old_text in filename:
new_name = filename.replace(old_text, new_text)
os.rename(
os.path.join(self.path, filename),
os.path.join(self.path, new_name)
)
def add_date_prefix(self, date_str):
"""添加日期前缀"""
for filename in os.listdir(self.path):
new_name = f"{date_str}_{filename}"
os.rename(
os.path.join(self.path, filename),
os.path.join(self.path, new_name)
)
def change_extension(self, new_ext):
"""修改扩展名"""
for filename in os.listdir(self.path):
name_without_ext = os.path.splitext(filename)[0]
new_name = f"{name_without_ext}.{new_ext}"
os.rename(
os.path.join(self.path, filename),
os.path.join(self.path, new_name)
)
# 使用示例
renamer = FileRenamer("./files")
renamer.add_prefix("2024_")
renamer.replace_text("old", "new")
Shell脚本 (Linux/Mac)
批量添加前缀
#!/bin/bash
# 批量添加前缀
for file in *.jpg; do
mv "$file" "photo_$file"
done
批量替换文件名中的文本
#!/bin/bash
# 替换文件名中的文本
for file in *; do
new_name="${file//old_text/new_text}"
mv "$file" "$new_name"
done
按序号重命名
#!/bin/bash
# 按序号重命名
count=1
for file in *; do
ext="${file##*.}"
mv "$file" "$(printf "file_%03d.%s" $count $ext)"
((count++))
done
Windows批处理
@echo off
setlocal enabledelayedexpansion
:: 批量重命名 - 添加前缀
set count=1
for %%f in (*.jpg) do (
ren "%%f" "photo_%%f"
)
:: 批量重命名 - 按序号
set count=1
for %%f in (*.txt) do (
ren "%%f" "file_!count!.txt"
set /a count+=1
)
使用Pathlib (Python 3.4+)
from pathlib import Path
def smart_rename(path, pattern="*"):
"""智能重命名"""
path = Path(path)
for file in path.glob(pattern):
if file.is_file():
# 获取文件信息
stem = file.stem # 文件名(不含扩展名)
suffix = file.suffix # 扩展名
# 示例:添加修改日期
import datetime
mod_time = file.stat().st_mtime
date_str = datetime.datetime.fromtimestamp(mod_time).strftime("%Y%m%d")
new_name = f"{date_str}_{stem}{suffix}"
file.rename(path / new_name)
高级功能 - 正则表达式重命名
import os
import re
def regex_rename(path, pattern, replacement):
"""使用正则表达式重命名"""
for filename in os.listdir(path):
new_name = re.sub(pattern, replacement, filename)
if new_name != filename:
os.rename(
os.path.join(path, filename),
os.path.join(path, new_name)
)
# 示例:将 "IMG_20240101_001.jpg" 转为 "photo_20240101_001.jpg"
regex_rename("./photos", r"^IMG_", "photo_")
# 示例:删除文件名中的数字
regex_rename("./docs", r"\d+", "")
使用建议
- 先测试:重要文件先备份或使用
--dry-run参数 - 正则表达式:处理复杂命名规则时非常有用
- 异常处理:添加try-except避免错误中断
- 图形界面:使用Tkinter或PyQt创建GUI版本
需要我帮你写一个特定场景的重命名脚本吗?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播