找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 497|回复: 24

[分享] 创建右键菜单修改文件名的两个方法

[复制链接]
发表于 前天 22:28 | 显示全部楼层 |阅读模式
本帖最后由 redyear2026 于 2026-4-2 12:26 编辑

   方法一是采用现有文件名修改目标文件名,方法二是采用剪贴板文本修改目标文件名
   以下示例代码采用 jscript,原因有三,一是在注册表内直接用 cmd.exe 启运批处理脚本代码可能会导致闪屏;二是 winPE 通常没有预装 powershell;三是 win11 高版本如 24H2+ 已彻底移除了 mshta 内嵌式代码应用(形如批处脚本或注册表中直接写入的 mshta VBScript:... 代码)。
   以下是三个示例脚本 x1.js, x2.js, x3.js 和一个注册表设置文件 右键菜单-修改文件名.reg,四个文件假设均存放在 c:\x 目录中,变更三个 *.js 文件的存放位置,须同时更新 *.reg 文件中的对应位置
   先运行 右键菜单-修改文件名.reg,其后即可在资源管理器中使用相应的 【修改文件名】右键菜单,其中包含三个二级子菜单,第一和第二个子菜单用于上述第一个更名方法,第三个子菜单用于上述第二个更名方法。

x1.js
  1. WSH.createObject('wscript.shell').RegWrite('HKCU\\Volatile Environment\\#$', WSH.arguments(0)), WSH.quit();
复制代码

x2.js
  1. v=WSH.arguments, ws=WSH.createObject('wscript.shell'), fso=WSH.createObject('scripting.filesystemobject');
  2. try { rv=ws.RegRead('HKCU\\Volatile Environment\\#$'); } catch(e) { ws.popup('未指定新文件名 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); }
  3. pf=fso.GetParentFolderName(v(0)), ef=fso.GetExtensionName(v(0)), nf=fso.GetBaseName(rv), f=pf+'\\'+nf+'.'+ef;
  4. if (rv==v(0) || fso.fileExists(f)) { ws.popup('新文件名与现有文件冲突 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); }
  5. fso.moveFile(v(0), f), WSH.quit();
复制代码
x3.js
  1. v=WSH.arguments, ws=WSH.createObject('wscript.shell'), fso=WSH.createObject('scripting.filesystemobject');
  2. c=WSH.createobject('htmlfile').parentWindow.clipboardData.getData('text');
  3. if (!c) { ws.popup('未发现剪贴板文本数据 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); } else nf=fso.getBasename(c);
  4. if (/[\:\?\*\<\|\>\"]/.test(nf)) { ws.popup('剪贴板路径文件名有非法字符 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); }
  5. pf=fso.getParentFolderName(v(0)), ef=fso.getExtensionName(v(0)), f=pf+'\\'+nf+'.'+ef;
  6. if (f.length>259) { ws.popup('剪贴板路径文件名长度超限 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); }
  7. if (f==v(0) || fso.fileExists(f)) { ws.popup('新文件名与现有文件冲突 ...5秒后退出', 5, '【报错】', 1|4096), WSH.quit(); }
  8. fso.moveFile(v(0), f), WSH.quit();
复制代码
右键菜单-修改文件名.reg
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\*\shell\ren_filename]
  3. @=""
  4. "MUIVerb"="【修改文件名】"
  5. "SubCommands"=""
  6. "Icon"="notepad.exe,0"

  7. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell]

  8. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\1-提取文件名]
  9. @=""
  10. "MUIVerb"="先提取文件名"

  11. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\1-提取文件名\command]
  12. @="wscript.exe /e:jscript c:\\x\\x1.js \"%1\""

  13. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\2-修改文件名]
  14. @=""
  15. "MUIVerb"="后修改文件名"

  16. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\2-修改文件名\command]
  17. @="wscript.exe /e:jscript c:\\x\\x2.js \"%1\""

  18. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\3-用剪贴板数据修改文件名]
  19. "muiVerb"="用剪贴板文本修改文件名"

  20. [HKEY_CLASSES_ROOT\*\shell\ren_filename\shell\3-用剪贴板数据修改文件名\command]
  21. @="wscript.exe /e:jscript c:\\x\\x3.js \"%1\""

复制代码






发表于 前天 23:33 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 昨天 03:04 | 显示全部楼层
感谢分享,
回复

使用道具 举报

发表于 昨天 08:13 | 显示全部楼层
回复

使用道具 举报

发表于 昨天 08:19 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 昨天 08:36 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 08:45 | 显示全部楼层
谢谢分享,非常感谢您!
回复

使用道具 举报

发表于 昨天 09:13 | 显示全部楼层
谢谢分享,非常感谢!
回复

使用道具 举报

发表于 昨天 09:24 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 昨天 09:42 | 显示全部楼层
多谢楼主分享
回复

使用道具 举报

发表于 昨天 09:50 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 昨天 09:58 | 显示全部楼层
谢谢楼主的分享!这个绝对要支持!!!
回复

使用道具 举报

发表于 昨天 10:10 | 显示全部楼层
感谢分享
回复

使用道具 举报

 楼主| 发表于 昨天 11:51 | 显示全部楼层
本帖最后由 redyear2026 于 2026-4-2 12:50 编辑

   对一楼代码补充几点说明,供有兴趣者参考。
   一。x1.js 脚本只干一件事,无条件向注册表临时变量区(HKCU\Volatile Environment\)覆写现有文件名数据,用临时变量 #$ 保存,以便后续修改文件名脚本 x2.js 取用,当系统重启后该变量在注册表中自动消失。此法尤其适用于两个分时独立运行的脚本之间互通数据,不必为此创建和删除临时文件,且注册表操作始终被系统置于内存中,效率高;关于临时变量的长度,仅当用于批处代码操作时会有 8K 字符量限制,一般也足够了。
   二。x2.js 脚本为确保有效运行,要完成两步排错,一是防空,二是重名。一旦发现错误会有弹窗提示,未被及时灭窗则5秒后自动退出。
   三。x3.js 脚本对剪贴板数据源,要完成四步排错,一是防空,二是重名,三是剪贴板文本数据包含路径文件名中禁用的字符,四是被采用的新文件名(即其全路径)长度超出系统默认值(尽管此错误极少发生)。一旦发现错误会有弹窗提示,未被及时灭窗则5秒后自动退出。

点评

厉害!  详情 回复 发表于 昨天 14:55
回复

使用道具 举报

发表于 昨天 12:24 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 13:27 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 13:41 | 显示全部楼层
谢谢分享了!
回复

使用道具 举报

发表于 昨天 13:59 | 显示全部楼层
很实用的技巧啊,感谢分享!
回复

使用道具 举报

发表于 昨天 14:42 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 14:55 | 显示全部楼层
redyear2026 发表于 2026-4-2 11:51
对一楼代码补充几点说明,供有兴趣者参考。
   一。x1.js 脚本只干一件事,无条件向注册表临时变量区(H ...

厉害!
回复

使用道具 举报

发表于 昨天 19:26 来自手机 | 显示全部楼层
技术达人,右键很方便
回复

使用道具 举报

发表于 昨天 19:41 | 显示全部楼层
很实用 谢谢
回复

使用道具 举报

体力1234 该用户已被删除
发表于 昨天 19:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

体力1234 该用户已被删除
发表于 昨天 19:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 半小时前 | 显示全部楼层
感谢楼主分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-4-3 16:30

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表