(已解决。感谢 redyear2026!)关于修改扩展名的VBS代码求助

查看 277|回复 29
redyear2026
OP
  
学习永无止境。
redyear2026
OP
  

redyear2026 发表于 2026-3-28 22:39
以下代码存为 test.reg(其中最后一行可自定义真实路径文件名,预设 c:\\test\\test.bat),双击运行会有 ...

原来弄个右键就可以了。
不过,注册码得改为:
[ol]Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\修改文件扩展名]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\修改文件扩展名\command]
@="cmd.exe /c X:\\test\\test.bat \"%L\""[/ol]复制代码
happyhour520   
   

xmzhqw 发表于 2026-3-29 10:03
原来弄个右键就可以了。
不过,注册码得改为:

   再优化一步,只用一个 test.hta 脚本文件就可以了(以下代码存为 test.hta),用此还可避免以前所给方案的一个缺陷,即当资源浏览器全屏时会遮掩 mshta 弹窗
   该方法限于 mshta 的 ie 引擎不能高于 9 版本,否则 mshta 脚本无法直接获取命令行参数,因此代码第一行的 'ie=9' 不要动就是了。
[ol]
【更改文件扩展名】
自定义扩展名:

扩展名选项:
  txt
  lst
  csv

[/ol]复制代码  注册表文件 test.reg 的内容相应调整如下
[ol]Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\修改文件扩展名]
[HKEY_CLASSES_ROOT\*\shell\修改文件扩展名\command]
@="cmd.exe /c start x:\\test\\test.hta \"%L\""
[/ol]复制代码
redyear2026
OP
  

redyear2026 发表于 2026-3-29 11:29
再优化一步,只用一个 test.hta 脚本文件就可以了(以下代码存为 test.hta),用此还可避免以前所给方 ...

太感动了,有你这么热心的朋友!再次感谢!
只是我又有求了,真不好意思。
因为经常弄PE,所以就碰到注册表,需要一个“去除扩展名”的快捷键。如果能够增加一个“去除扩展名”的选项,就更完美了。谢谢!
coolwu   
学习了
redyear2026
OP
  

xmzhqw 发表于 2026-3-29 12:33
太感动了,有你这么热心的朋友!再次感谢!
只是我又有求了,真不好意思。

新版代码如下存为 test.hta,试试吧
[ol]
【更改文件扩展名】
自定义扩展名:

扩展名选项:
   txt
   lst
   csv
   去除扩展名

[/ol]复制代码
redyear2026
OP
  

redyear2026 发表于 2026-3-29 15:38
新版代码如下存为 test.hta,试试吧

新版的在我这,无论是PE还是本地系统都无法运行。
旧的却可以正常运行,Win10还是Win11的PE都可以。
不敢再麻烦你了,能用就行。我最终采用旧的方案,再加一个去除扩展名的右键。
[color=]最终代码:
[ol]
【更改文件扩展名】
自定义扩展名:
扩展名选项:
  7z
  ahk
  bat
  cmd
  dll
  exe
  html
  ini
  inf
  jpeg
  lua
  mhtml
  reg
  rar
  tst
  vbs
  xml
  zip

[/ol]复制代码
[color=]右键菜单为2个,一个是你的代码,一个为增加的去除扩展名:
[ol]Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名]
"SubCommands"=""
"MUIVerb"="快速修改该文件后缀(&Z)"
"icon"="X:\\Program Files\\Other\\text\\MoreSoft.dll,39"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\去掉后缀名]
"MUIVerb"="去掉后缀名(扩展名)"
"Icon"="X:\\Windows\\System32\\imageres.dll,2"
"CommandFlags"=dword:00000020
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\去掉后缀名\command]
@="cmd /c for /f \"delims=\" %%a in (\"%1\") do rename \"%%a\" \"%%~na\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\修改扩展名]
"MUIVerb"="修改为其它的后缀名"
"icon"="X:\\Program Files\\Other\\text\\MoreSoft.dll,39"
"CommandFlags"=dword:00000020
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\修改扩展名\command]
@="pecmd Exec !X:\\Windows\\System32\\修改文件扩展名.bat \"%L\""[/ol]复制代码
[color=]再次表示感谢!!
redyear2026
OP
  
   

xmzhqw 发表于 2026-3-29 16:52
新版的在我这,无论是PE还是本地系统都无法运行。
旧的却可以正常运行,Win10还是Win11的PE都可以。

手边没有PE系统验证,26楼新版代码 test.hta(存为 ansi 或 gb2312 编码)在win7-11各版系统应用均无问题,推测也许与 PE 跑 mshta 中文菜单有关?你可以用一个英文菜单名替换代码
[color=]第12行和第20行
中的
[color=]去除扩展名
,再试试
redyear2026
OP
  

xmzhqw 发表于 2026-3-29 16:52
新版的在我这,无论是PE还是本地系统都无法运行。
旧的却可以正常运行,Win10还是Win11的PE都可以。

再给一个验证版本,将其中的中文菜单名用英文字符*包裹成
[color=]*去除扩展名*
,你再试试。
[ol]
【更改文件扩展名】
自定义扩展名:

扩展名选项:
   txt
   lst
   csv
   *去除扩展名*

[/ol]复制代码
redyear2026
OP
  

redyear2026 发表于 2026-3-29 18:50
手边没有PE系统验证,26楼新版代码 test.hta(存为 ansi 或 gb2312 编码)在win7-11各版系统应用均无问题 ...

感谢不怨其烦的解答!
是我眼花:hta 看成 bta 了。真不好意思。改一下,可以用了。完美极了!谢谢!!!
您需要登录后才可以回帖 登录 | 立即注册