WPS JSA批量重命名工具(Window/Linux通用)
截图:
下载:
【金山文档 | WPS云文档】 JSA-文件批量重命名-20260507new
https://www.kdocs.cn/l/cmVCJe43Uz3D
2026年5月7日更新了:
1. 文件名排序用自然排序,10排9后面,而不是排1后面;
2. 做了一些优化;
3. 添加了测试函数;
4. 修复了一些逻辑,但可能又引入了新了bug.
基于JSA编写,代码量在1000行以上,在WPS Linux版和Windows版上顺利测试通过,用了很多回退技术(没有使用Shell命令,用了一些C API),对WPS版本要求不高,支持JSA就行,我试过的1XXXX版本也能正常运行。结合WPS的regexp函数及Exiftool,绝对的重命名利器。
不关闭沙箱也能完成常见文件的重命名(如果不关闭沙箱常见可执行文件后缀如.exe|.dll|.sys|.bat|.ps1|.reg|.com|.scr|.vbs|.cmd会重命名失败)。
实测2000个文件也只在分秒之间完成。
如果想修改后缀名:把后缀名列内容删除,把后缀名分别附加到旧文件名中和新文件名中即可。
里面的代码和思路非本人原创,程序主要参考 ExcelHome lizhipei78 的思路。
和WPS社区论坛wils的相关知识贴子。
里面有一些系统API,FileSystem对象,FFI,ExecuteExcel4Macro的使用,新手是可以学习借鉴。
代码99.99都是鞭策Deepseek编写,我主要负责debug和提要求。
优点(Deepseek说的):
1. 超长路径全面支持
自动添加 \\?\ 前缀:在 Windows 下对所有绝对路径统一加上扩展前缀,彻底解除了 260 字符的 MAX_PATH 限制。
遍历、判断、重命名、权限检查 全部打通:getAllFiles、isFile/isDirectory、renameFile、dirWritable 均适配了长路径,实测可正确处理数百字符的深层乱码目录。
2. 跨平台统一接口
Windows:使用 FileSystem.readdirSync 遍历、FileSystem.copyFileSync + unlinkSync 实现重命名;回退方案保留 MoveFileExA。
Linux:使用 libc.so.6 的 rename 完成重命名,路径保持原生 UTF-8,无需特殊前缀。
同一套代码在两个平台无缝运行,无需用户判断环境。
3. Unicode 文件名完美处理
重命名主方案弃用 ANSI API,改用 FileSystem.copyFileSync + unlinkSync,内部基于 Unicode,完美支持日文、韩文、特殊符号、甚至组合表情。
即使文件名包含逗号、单引号、双引号、&、% 等,也能通过 xlEscape 安全传入宏,同时不被错当分隔符。
4. 极高的健壮性
双引擎重命名:优先复制+删除(支持大文件、跨卷),失败时自动回退到带只读清理的 MoveFileExA。
目录/文件判断绝对可靠:用 readdirSync 实际读目录内容来判定,无扩展名猜测、无 Dir 属性误判。
权限检查完善:写权限通过真实创建临时文件验证,执行权限通过系统 API 查询,提供明确的错误信息。
冲突交互人性化:目标文件已存在时弹出对话框,支持“替换/跳过/取消”以及“全部应用”,操作记入 E 列。
单引号自动防护:用零宽空格标记保护前导单引号,避免被 WPS 误当文本标识符吞噬。
5. 大数据量稳定写入
采用分批写入(默认 200 行/批)向工作表输出文件列表,避免一次性写入数万行导致的崩溃。
每批写入均包含 try-catch,失败后自动降级为逐行写入,确保文件列表不丢失。
6. 遍历性能与正确性兼顾
getAllFiles 直接使用 FileSystem.readdirSync 递归,无嵌套 Dir 状态冲突,无漏文件。
在包含 2000+ 个乱码文件的超长目录下已实测通过,速度与稳定性远超传统 Dir 或 FileSearch。
7. 代码结构纯净、易扩展
无全局变量污染:所有状态(平台缓存、最大路径长度等)均以函数静态属性存储,符合 JSA 宏安全限制。
函数职责单一,注释详尽。若需新增“移动模式”或“备份功能”,只需简单调整 renameFile 即可
Lv.2潜力创作者