确定自己知道在做什么?TC恐怕搞不定吧,我是让AI帮我写了个python脚本,然后再用TC批量重命名
# Usage: python rename_wechat_images.py <directory>
import os
import time
import re
import sys
def get_new_filename(prefix, formatted_time, extension, root):
new_name = f"{prefix}_{formatted_time}{extension}"
new_file_path = os.path.join(root, new_name)
counter = 1
while os.path.exists(new_file_path):
new_name = f"{prefix}_{formatted_time}_{counter}{extension}"
new_file_path = os.path.join(root, new_name)
counter += 1
return new_file_path
def rename_wechat_images(directory):
# 递归遍历目录及其子目录
for root, _, files in os.walk(directory):
for filename in files:
# 初始化变量
prefix = None
timestamp = None
# 先尝试匹配简单格式:mmexport1704350068607.jpg 或 wx_camera_170
4350068607.jpg
simple_match = re.search(r'(mmexport|wx_camera_)(\d{13})', filen
ame)
# 尝试匹配复杂格式:mmexportf9f9dc63dc411f04046520ce42db2b3b_175
2719934464.jpeg
complex_match = re.search(r'(mmexport|wx_camera_)([a-f0-9]+)_(\d
{13})', filename, re.IGNORECASE)
if simple_match:
prefix = simple_match.group(1)
timestamp = int(simple_match.group(2))
elif complex_match:
prefix = complex_match.group(1)
timestamp = int(complex_match.group(3))
if timestamp:
# 将毫秒级时间戳转换为秒级时间戳
timestamp_seconds = timestamp // 1000
# 转换为本地时间
local_time = time.localtime(timestamp_seconds)
# 格式化为 YYYYMMDD_HHMMSS
formatted_time = time.strftime('%Y%m%d_%H%M%S', local_time)
# 获取新的文件路径
old_file_path = os.path.join(root, filename)
new_file_path = get_new_filename(prefix, formatted_time, os.
path.splitext(filename)[1], root)
# 重命名文件
os.rename(old_file_path, new_file_path)
print(f'Renamed: {old_file_path} -> {new_file_path}')
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python rename_wechat_images.py <directory>")
sys.exit(1)
directory = sys.argv[1]
if not os.path.isdir(directory):
print(f"The specified path '{directory}' is not a valid directory.")
sys.exit(1)
rename_wechat_images(directory)
【 在 passbyer 的大作中提到: 】
: 标 题: 请教批量重命名mmepxort...的问题
: 发信站: 水木社区 (Sun Feb 8 12:27:31 2026), 站内
:
: 有若干微信导出的图片文件,文件名为mmexport11111(13位数字),
:
: 豆包搜了一下,按照如下步骤
:
: 步骤 1:确认 TC 版本
:
: 打开 TC → 帮助 → 关于 Total Commander,确认版本≥9.50(低于此版本建议升级,
: 或用备选方案)。
:
: 步骤 2:批量重命名配置(核心)
:
: 选中目标文件,按Ctrl+M打开「多功能重命名工具」;
:
: 切换到「搜索和替换」标签,勾选「使用正则表达式」:
:
: 「查找」框:mmexport(\d{10})\d{3}\.([a-zA-Z0-9]+)
:
: (拆分 13 位时间戳:捕获前 10 位秒级 + 忽略后 3 位毫秒,同时捕获扩展名)
:
: 「替换」框:$1.$2(仅保留 10 位时间戳 + 原扩展名);
:
: 切换到「重命名掩码」标签:
:
: 「文件名」框:[=tc:formatdate($1, "yyyy-mm-dd_hh-nn-ss")]
:
: ($1 是步骤 2 捕获的 10 位秒级时间戳,格式可自定义)
:
: 「扩展名」框:[E](保留原扩展名,如 jpg/png);
:
: 点击「预览」确认新文件名(如2017-08-02_10-09-30.jpg),无误后点击「开始」。
:
:
: 结果不行,报错,确认版本是9.51,不知道怎么回事。请教。
:
:
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 123.112.67.*]
--
修改:pinacle FROM 123.118.13.*
FROM 123.118.13.*