- 主题:请教批量重命名mmepxort...的问题
有若干微信导出的图片文件,文件名为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,不知道怎么回事。请教。
--
FROM 123.112.67.*
确定自己知道在做什么?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.*
微信导出的照片,名称都是
mmexport1718992126141.jpg这样的,
我想转换为yyyymmdd-hhnns.jpg这样的
量非常大,想用totalcommander的批量重命名功能解决,
不想找专门的软件。
【 在 mthpe 的大作中提到: 】
: 不知道你在说啥
: 建议直给
: 至少我是不愿慢慢阅读理解你在干什么,想要干什么
: ...................
--
FROM 123.112.67.*
您还真惜时,发完贴就下线;
就您这沟通态度,估计网上求助得到完整帮助的机会比较少吧
我上面的回复删除,您继续等有缘人吧
【 在 passbyer 的大作中提到: 】
: 微信导出的照片,名称都是
: mmexport1718992126141.jpg这样的,
: 我想转换为yyyymmdd-hhnns.jpg这样的
: ...................
--
FROM 124.127.67.*
「文件名」框:[=tc:formatdate($1, "yyyy-mm-dd_hh-nn-ss")]
这一步,TC怎么能知道 $1 怎么转换到日期和时间?
【 在 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.*]
--
修改:huhu FROM 116.233.59.*
FROM 116.233.59.*
如图
【 在 huhu 的大作中提到: 】
: 「文件名」框:[=tc:formatdate($1, "yyyy-mm-dd_hh-nn-ss")]
: 这一步,TC怎么能知道 $1 怎么转换到日期和时间?
--
FROM 219.142.239.*
附件(57.7KB) 虾.webp哈哈,这这含义了
不管怎么说TC无法知道 1970/1/1 为时间起点这样的信息的吧
【 在 mthpe 的大作中提到: 】
如图
【 在 huhu 的大作中提到: 】
: 「文件名」框:[=tc:formatdate($1, "yyyy-mm-dd_hh-nn-ss")]
: 这一步,TC怎么能知道 $1 怎么转换到日期和时间?
--
FROM 116.233.59.*
可以知道,比如界面中的[YMD]
但这与主题应该不是一个概念,有些情况会发生变化(我记得fat32→ntfs会发生)
【 在 huhu 的大作中提到: 】
: 哈哈,这这含义了
: 不管怎么说TC无法知道 1970/1/1 为时间起点这样的信息的吧
: 如图
: ...................
--
FROM 219.142.239.*
wsl完美解决,感谢 @happyTC @HANNING 两位大佬带来的灵感
--
FROM 101.19.166.*

用另外一个不得已的办法解决了,在macos下,将需要改名的文件,放到一个目录下,比
如download,然后在终端中运行:
cd ~/Downloads && for file in mmexport*; do [ -f "$file" ] && fn="${file%.*}
" && ext="${file##*.}" && ts="${fn#mmexport}" && ts="${ts:0:10}" && newname=
$(date -r "$ts" +"%Y%m%d %H%M%S")."$ext" && mv -n "$file" "$newname"; done
至于为何是macos,是因为我的totalcommander是运行在parallel desktop里的,也算是
一个勉强能解决问题的办法。
【 在 mthpe 的大作中提到: 】
: wsl完美解决,感谢 @happyTC @HANNING 两位大佬带来的灵感
--
FROM 123.112.67.*