AutoHotkey提供五种批量重命名方式:一、添加统一前缀;二、序号递增重命名并补零;三、正则替换清洗文件名;四、注入修改时间戳;五、交互式输入前缀/后缀。

如果您需要对文件夹中的多个文件进行统一格式的重命名操作,AutoHotkey 提供了强大的字符串处理与文件系统交互能力。以下是几种基于 AutoHotkey 的批量重命名实现方式:
一、基础脚本:为所有文件添加前缀
该方法通过遍历指定文件夹内所有文件,使用 Loop, Files 命令获取路径,并调用 FileMove 命令重命名。适用于简单统一添加前缀的场景。
1、新建一个文本文件,将后缀改为 .ahk(例如 Rename_AddPrefix.ahk)。
2、右键该文件,选择“编辑”,粘贴以下代码:
SetWorkingDir %A_ScriptDir%
Folder := A_Desktop "\TestFiles"
Prefix := "【备份】"
Loop, Files, %Folder "\*.*", D
{
Loop, Files, %A_LoopFileFullPath "\*.*"
{
NewName := Prefix . A_LoopFileName
FileMove, %A_LoopFileFullPath%, %A_LoopFileDir% "\" NewName
}
}
3、保存后双击运行脚本,脚本将自动为 TestFiles 文件夹下所有文件名添加【备份】前缀。
二、序号递增重命名:按数字顺序重排文件名
该方法利用计数器变量为每个文件分配唯一序号,支持保留原扩展名,并可自定义起始编号与位数补零格式。
1、新建另一个 .ahk 文件(例如 Rename_Numbered.ahk)。
2、粘贴以下代码:
SetWorkingDir %A_ScriptDir%
Folder := A_Desktop "\TestFiles"
StartNum := 100
DigitCount := 3
Index := StartNum
Loop, Files, %Folder "\*.*"
{
if (A_LoopFileAttrib & "D")
continue
Ext := A_LoopFileExt
NewName := SubStr("000" Index, -DigitCount+1) . Ext
FileMove, %A_LoopFilePath%, %A_LoopFileDir% "\" NewName
Index++
}
3、运行前请确认 TestFiles 文件夹中不含子文件夹(或已注释掉跳过目录逻辑),否则可能报错。
三、正则替换重命名:按模式搜索并修改文件名
该方法借助 RegExReplace 函数对文件名主体执行正则匹配与替换,适合处理含日期、版本号、冗余符号等需清洗的命名结构。
1、新建 Rename_Regex.ahk 文件。
2、粘贴以下代码:
SetWorkingDir %A_ScriptDir%
Folder := A_Desktop "\TestFiles"
Loop, Files, %Folder "\*.*"
{
if (A_LoopFileAttrib & "D")
continue
Base := A_LoopFileName
Ext := A_LoopFileExt
NewBase := RegExReplace(Base, "i)_vd+.d+", "")
NewBase := RegExReplace(NewBase, "[[](){}]", "_")
NewName := NewBase . Ext
FileMove, %A_LoopFilePath%, %A_LoopFileDir% "\" NewName
}
3、运行后,所有形如 “report_v2.1.pdf” 的文件将变为 “report.pdf”,且括号字符统一替换为下划线。
四、时间戳注入重命名:在文件名中插入当前日期或修改时间
该方法提取文件最后修改时间,将其格式化为 YYYYMMDD 或其他样式后嵌入新文件名,便于归档识别。
1、新建 Rename_Timestamp.ahk 文件。
2、粘贴以下代码:
SetWorkingDir %A_ScriptDir%
Folder := A_Desktop "\TestFiles"
Loop, Files, %Folder "\*.*"
{
if (A_LoopFileAttrib & "D")
continue
FileGetTime, ModTime, %A_LoopFilePath%, M
FormatTime, TimeStr, %ModTime%, yyyyMMdd_HHmm
Base := StrReplace(A_LoopFileName, A_LoopFileExt, "")
Ext := A_LoopFileExt
NewName := Base . "_" . TimeStr . Ext
FileMove, %A_LoopFilePath%, %A_LoopFileDir% "\" NewName
}
3、运行后,每个文件名末尾将追加其最后修改时间,格式为 “原名_20240520_1430.pdf”。
五、交互式重命名:弹出输入框让用户指定规则参数
该方法通过 InputBox 获取用户输入的前缀、后缀或替换内容,提升脚本复用性与灵活性,避免每次修改代码。
1、新建 Rename_Interactive.ahk 文件。
2、粘贴以下代码:
SetWorkingDir %A_ScriptDir%
InputBox, UserPrefix, 批量重命名, 请输入要添加的前缀:,, 300, 150
If ErrorLevel
ExitApp
InputBox, UserSuffix, 批量重命名, 请输入要添加的后缀(可留空):,, 300, 150
If ErrorLevel
ExitApp
Folder := A_Desktop "\TestFiles"
Loop, Files, %Folder "\*.*"
{
if (A_LoopFileAttrib & "D")
continue
Base := A_LoopFileName
Ext := A_LoopFileExt
NewBase := UserPrefix . StrReplace(Base, Ext, "") . UserSuffix
NewName := NewBase . Ext
FileMove, %A_LoopFilePath%, %A_LoopFileDir% "\" NewName
}
3、运行时将弹出两个输入框,用户可动态输入前缀与后缀,无需编辑脚本源码。

















