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

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

[复制链接]
发表于 前天 11:29 | 显示全部楼层 |阅读模式
本帖最后由 xmzhqw 于 2026-3-30 10:59 编辑

最近刷到一个更改扩展名的VBS文件,觉得挺不错的。如果能多个下拉菜单,设置一些常用的扩展名,既可以直接选用下拉菜单中的扩展名,也可以自己填写扩展名,就更完美了。
2026-03-28_105420.png
对我来说,那俺面而去的神啊,难!难!难!
对万能的坛友,就是小菜一碟!


原代码如下:
  1. '重命名后缀 By 依梦琴瑶
  2. On Error Resume Next
  3. Dim oArgs, File, fso, OldExt, NewExt, WSHShell
  4. Set oArgs = WScript.Arguments
  5. Set WSHShell = WScript.CreateObject("WScript.Shell")
  6. If oArgs.Count <> 1 Then
  7.     MsgBox  "请不要双击执行此脚本。",48+4096,"警告"
  8.     WScript.Quit
  9. End If
  10. File = oArgs(0)
  11. Set fso = CreateObject("Scripting.FileSystemObject")
  12. OldExt = fso.GetExtensionName(File)
  13.     NewExt=InputBox("当前文件后缀名:" & OldExt,"请输入新的后缀名")
  14.     If len(NewExt) > 0 Then
  15.         fso.GetFile(File).Name = fso.GetBaseName(File) & "." & NewExt
  16.         WSHShell.Popup "已成功修改扩展名,请注意查收!", 1, "操作成功", vbInformation
  17.         Set WSHShell = Nothing
  18.     End If
复制代码
   解决方案:特别感谢 redyear2026,也感谢其它热心帮助的朋友。
   1、将下面的代码复制并保存为ANSI格式的 hta 文件,命名为“修改文件扩展名.hta”,放于System32中(可以自己改路径及名称)
  1. <meta http-equiv='x-ua-compatible' content='ie=9'>
  2. <script>window.resizeTo(680, 120);</script>
  3. <hta:application id=v>
  4. <title>【更改文件扩展名】</title></br><center>
  5. 自定义扩展名:
  6. <input type="text" id=t value='' />
  7. 扩展名选项:
  8. <select id=s onclick='t.value=s.value'>
  9.   <option>去除扩展名</option>
  10.   <option>7z</option>
  11.   <option>ahk</option>
  12.   <option>bat</option>
  13.   <option>cmd</option>
  14.   <option>dll</option>
  15.   <option>exe</option>
  16.   <option>html</option>
  17.   <option>ini</option>
  18.   <option>inf</option>
  19.   <option>jpeg</option>
  20.   <option>lua</option>
  21.   <option>mhtml</option>
  22.   <option>reg</option>
  23.   <option>rar</option>
  24.   <option>tst</option>
  25.   <option>vbs</option>
  26.   <option>xml</option>
  27.   <option>zip</option>
  28. </select>
  29. <input type=button id=b value='【确认】' onclick='xxx()'></center>
  30. <script>
  31.    srcF=v.commandLine.split('"')[3];
  32.    function xxx () {
  33.       v=document.getElementById('t').value, v=v? v: s.vlaue;
  34.       p=srcF.lastIndexOf('.'), newF=(p==-1)? srcF: srcF.substring(0,p);
  35.       if (v != '去除扩展名') newF+='.'+v;
  36.       new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  37.       close(); }
  38. </script>
复制代码
  2、导入注册表,生成右键菜单:(路径图标自己改)
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\PE-SOFT\Classes\*\shell\修改文件扩展名]
  3. "icon"="X:\\Program Files\\Other\\text\\MoreSoft.dll,39"
  4. @="快速修改该文件扩展名(&Z)"
  5. [HKEY_LOCAL_MACHINE\PE-SOFT\Classes\*\shell\修改文件扩展名\command]
  6. ;;@="cmd.exe /c start X:\\test\\test.hta \"%L\""
  7. @="pecmd Exec !X:\\Windows\\System32\\修改文件扩展名.hta \"%L\""
复制代码

2026-03-29_232613.png
发表于 前天 11:40 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2026-3-28 11:42 编辑

直接去问依(梦琴瑶)神。不过vbs应该没有这个能力,需要别的语言了。
回复

使用道具 举报

发表于 前天 11:50 | 显示全部楼层
如果能够实现,确实完美。

等大神出手
回复

使用道具 举报

发表于 前天 11:55 | 显示全部楼层
本帖最后由 yyz2191958 于 2026-3-28 12:07 编辑

[分享] 右键添加:修改后缀   看看对你有没有用


点评

谢谢!这个已有,但不方便,后缀名太多了。  详情 回复 发表于 前天 12:42
回复

使用道具 举报

发表于 前天 11:57 | 显示全部楼层
问题是这也快不到哪去啊。。。
又不能使用热键
还得菜单里再次找寻
真的体现不出多方便啊。

点评

用 ab commander 的重命名,就可以很方便快速的更换后缀名称  发表于 前天 21:52
回复

使用道具 举报

发表于 前天 12:11 | 显示全部楼层
直接复制下面全部代码,保存为 改扩展名.vbs 即可使用:


  1. '重命名后缀 增强版:下拉菜单 + 手动输入 / 优化升级
  2. On Error Resume Next
  3. Dim oArgs, File, fso, OldExt, NewExt, WSHShell, objIE
  4. Set oArgs = WScript.Arguments
  5. Set WSHShell = WScript.CreateObject("WScript.Shell")
  6. Set fso = CreateObject("Scripting.FileSystemObject")

  7. ' 检查是否拖拽文件
  8. If oArgs.Count <> 1 Then
  9.     MsgBox "请拖拽一个文件到该脚本上执行!", 48 + 4096, "警告"
  10.     WScript.Quit
  11. End If
  12. File = oArgs(0)
  13. OldExt = fso.GetExtensionName(File)

  14. ' ===================== 常用扩展名列表(可自行增删)=====================
  15. Const ExtList = "txt,mp4,jpg,png,mp3,zip,rar,pdf,docx,xlsx,pptx,html,bat,vbs"
  16. ' ======================================================================

  17. ' 创建带下拉框的输入窗口
  18. Set objIE = CreateObject("InternetExplorer.Application")
  19. objIE.Navigate "about:blank"
  20. objIE.ToolBar = False
  21. objIE.StatusBar = False
  22. objIE.Width = 400
  23. objIE.Height = 220
  24. objIE.Left = 200
  25. objIE.Top = 200
  26. objIE.Document.Title = "修改文件扩展名"

  27. ' 构建界面HTML
  28. With objIE.Document.Body
  29.     .Style.Background = "#f0f0f0"
  30.     .Style.Font = "14px 微软雅黑"
  31.     .InnerHTML = "<div style='padding:15px;'>" & _
  32.     "<b>当前文件扩展名:</b>" & OldExt & "<br><br>" & _
  33.     "<b>选择或输入新扩展名:</b><br><br>" & _
  34.     "<select id='selExt' style='width:320px;height:25px;font-size:14px;'></select><br><br>" & _
  35.     "<input type='text' id='txtExt' style='width:320px;height:25px;font-size:14px;' placeholder='也可以在这里手动输入'><br><br>" & _
  36.     "<center><input type='button' value='确定修改' onclick='ok()' style='width:100px;height:30px;font-size:14px;'>" & _
  37.     "<input type='button' value='取消' onclick='cancel()' style='width:100px;height:30px;font-size:14px;'></center></div>"

  38.     ' 填充下拉选项
  39.     Dim arrExt, i
  40.     arrExt = Split(ExtList, ",")
  41.     For i = 0 To UBound(arrExt)
  42.         Set opt = .ParentWindow.document.createElement("OPTION")
  43.         opt.Text = arrExt(i)
  44.         objIE.Document.getElementById("selExt").options.add(opt)
  45.     Next
  46. End With

  47. ' 脚本逻辑
  48. objIE.Document.ParentWindow.window.setInterval "if(document.activeElement.tagName!='HTML'&&document.activeElement.tagName!='BODY'){document.getElementById('selExt').blur();}", 100
  49. objIE.Document.ParentWindow.ok = GetRef("OKClick")
  50. objIE.Document.ParentWindow.cancel = GetRef("CancelClick")
  51. objIE.Visible = True

  52. ' 等待用户操作
  53. Do While objIE.Visible
  54.     WScript.Sleep 100
  55. Loop

  56. Sub OKClick()
  57.     NewExt = Trim(objIE.Document.getElementById("txtExt").Value)
  58.     If NewExt = "" Then
  59.         NewExt = Trim(objIE.Document.getElementById("selExt").Value)
  60.     End If
  61.     objIE.Quit()
  62.     Set objIE = Nothing

  63.     If Len(NewExt) > 0 Then
  64.         fso.GetFile(File).Name = fso.GetBaseName(File) & "." & NewExt
  65.         WSHShell.Popup "修改成功!新扩展名:" & NewExt, 2, "成功", 64
  66.     End If
  67.     WScript.Quit
  68. End Sub

  69. Sub CancelClick()
  70.     objIE.Quit()
  71.     Set objIE = Nothing
  72.     WScript.Quit
  73. End Sub
复制代码


点评

好像要保存为ANSI才能正常运行此代码,否则会出错。 运行后,弹出一个提示,但无法使用。  详情 回复 发表于 前天 12:42
回复

使用道具 举报

发表于 前天 12:12 | 显示全部楼层
来看看
回复

使用道具 举报

 楼主| 发表于 前天 12:42 | 显示全部楼层
a66 发表于 2026-3-28 12:11
直接复制下面全部代码,保存为 改扩展名.vbs 即可使用:

好像要保存为ANSI才能正常运行此代码,否则会出错。

运行后,弹出一个提示,但无法使用。
2026-03-28_123852.png

点评

确实是这样  详情 回复 发表于 前天 12:48
回复

使用道具 举报

 楼主| 发表于 前天 12:42 | 显示全部楼层
yyz2191958 发表于 2026-3-28 11:55
[分享] 右键添加:修改后缀   看看对你有没有用

谢谢!这个已有,但不方便,后缀名太多了。
回复

使用道具 举报

发表于 前天 12:48 | 显示全部楼层
xmzhqw 发表于 2026-3-28 12:42
好像要保存为ANSI才能正常运行此代码,否则会出错。

运行后,弹出一个提示,但无法使用。

确实是这样
回复

使用道具 举报

发表于 前天 14:15 | 显示全部楼层
等热心人来
回复

使用道具 举报

发表于 前天 15:26 | 显示全部楼层
   试试纯批能走多远...
   以下代码存为 test.bat 运行,代码中第四行预设了三个扩展名选项(txt, lst, csv)可自定义修改或追加
   命令行用法如 test "要改扩展名的文件",或将目标文件直接拖拽给 test.bat 亦可
  1. @echo off &setlocal &if "%~1"=="" (set/p "f=拖入一个要更改扩展名的文件:") else set "f=%~1"
  2. set "f=%f:"=%" & for %%F in ("%f%") do set "nF=%%~nF"
  3. setlocal enabledelayedexpansion & set "n=1"
  4. for %%e in (txt, lst, csv) do echo,!n! = %%e&set/a "n+=1" &set "_!n!=%%e"
  5. choice /c "0123456789abc" /n /m "键入以上一个序号改为对应的扩展名(0=自定义扩展名):"
  6. if %errorlevel% neq 1 (set "e=!_%errorlevel%!") else set/p "e=自定义扩展名:"
  7. ren "!f!" "!nF!.!e!" &exit/b
复制代码




回复

使用道具 举报

发表于 前天 20:24 | 显示全部楼层
看看
回复

使用道具 举报

发表于 前天 21:45 | 显示全部楼层
   再给一个 bat+mshta 混编脚本,可实现自定义输入扩展名,也可从下拉选项菜单中择取
   以下代码可存为 test.bat 运行,可直接拖拽要更改扩展名的文件给 test.bat 运行即可,如没有拖拽文件喂送,test.bat 会要求即时拖入一个目标文件
   代码第12-14行预设了三个扩展名选项示例如 txt lst csv,可自定义修改或添加
   本脚本采用的 mshta 要求系统内置的 ie 引擎至少是 v9 版
   因采用独立运行 mshta 脚本文件,故 test.bat 在 win11 新版本系统下依然可正常运行


  1. <!-- :
  2. @echo off &if "%~1"=="" (set/p "f=拖入一个要更改扩展名的文件:") else set f=%~1
  3. if not exist %f% exit/b
  4. set/p="%f%"<nul|clip & start "" mshta "%~f0" &exit/b
  5. -->
  6. <meta http-equiv='x-ua-compatible' content='ie=9'>
  7. <script>window.resizeTo(850, 180);</script>
  8. <title>【更改文件扩展名】</title></br><center>
  9. 自定义扩展名:<input type="text" id=t value='' />
  10. 扩展名选项:
  11. <select id=s onclick='t.value=s.value'>
  12.   <option>txt</option>
  13.   <option>lst</option>
  14.   <option>csv</option>
  15. </select>
  16. <input type=button id=b value='【确认更名】' onclick='xxx()'></center>
  17. <script>
  18.   function xxx () {
  19.     v=document.getElementById('t').value, v=v? v: s.vlaue;
  20.     srcF=clipboardData.getData('text').replace(/\"/g,'');
  21.     p=srcF.lastIndexOf('.'), newF=srcF.substring(0,p)+'.'+v;
  22.     new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  23.     close(); }
  24. </script>
复制代码



点评

非常感谢! 这个拖拽确实可以用。 如果想弄到右键菜单中,右击文件,在菜单中选择运行此批处理,弹出修改对话框,要怎样写?因为我感觉集成在右键中,使用更方便。谢谢。  详情 回复 发表于 前天 21:59
回复

使用道具 举报

发表于 前天 21:47 | 显示全部楼层
学习打卡
回复

使用道具 举报

 楼主| 发表于 前天 21:59 | 显示全部楼层
redyear2026 发表于 2026-3-28 21:45
再给一个 bat+mshta 混编脚本,可实现自定义输入扩展名,也可从下拉选项菜单中择取
   以下代码可存为 t ...

非常感谢!
这个拖拽确实可以用。
如果想弄到右键菜单中,右击文件,在菜单中选择运行此批处理,弹出修改对话框,要怎样写?因为我感觉集成在右键中,使用更方便。谢谢。
回复

使用道具 举报

发表于 前天 22:23 | 显示全部楼层
感謝樓主分享 ^^ 謝謝喔,感恩喔~~!
回复

使用道具 举报

发表于 前天 22:39 | 显示全部楼层
本帖最后由 redyear2026 于 2026-3-28 22:40 编辑
xmzhqw 发表于 2026-3-28 21:59
非常感谢!
这个拖拽确实可以用。
如果想弄到右键菜单中,右击文件,在菜单中选择运行此批处理,弹出修改 ...

以下代码存为 test.reg(其中最后一行可自定义真实路径文件名,预设 c:\\test\\test.bat),双击运行会有弹窗提示,点击 '是' 即可完成注册表设置,试试吧
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\*\shell\修改文件扩展名]
  3. [HKEY_CLASSES_ROOT\*\shell\修改文件扩展名\command]
  4. @="cmd.exe /c c:\\test\\test.bat \"%L\""
复制代码




点评

原来弄个右键就可以了。 不过,注册码得改为:  详情 回复 发表于 昨天 10:03
回复

使用道具 举报

发表于 昨天 03:33 | 显示全部楼层
现在AI太好用了,可以让AI写。前段时间还让AI写了powershell的批量修改txt文件内容和文件名的脚本
回复

使用道具 举报

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

使用道具 举报

发表于 昨天 08:21 来自手机 | 显示全部楼层
学习永无止境。
回复

使用道具 举报

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

原来弄个右键就可以了。
不过,注册码得改为:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\修改文件扩展名]

  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\修改文件扩展名\command]
  4. @="cmd.exe /c X:\\test\\test.bat \"%L\""
复制代码
回复

使用道具 举报

发表于 昨天 11:29 | 显示全部楼层
本帖最后由 redyear2026 于 2026-3-29 11:33 编辑
xmzhqw 发表于 2026-3-29 10:03
原来弄个右键就可以了。
不过,注册码得改为:

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

  1. <meta http-equiv='x-ua-compatible' content='ie=9'>
  2. <script>window.resizeTo(850, 180);</script>
  3. <hta:application id=v>
  4. <title>【更改文件扩展名】</title></br><center>
  5. 自定义扩展名:
  6. <input type="text" id=t value='' />
  7. 扩展名选项:
  8. <select id=s onclick='t.value=s.value'>
  9.   <option>txt</option>
  10.   <option>lst</option>
  11.   <option>csv</option>
  12. </select>
  13. <input type=button id=b value='【确认】' onclick='xxx()'></center>
  14. <script>
  15.   srcF=v.commandLine.split('\"')[3];
  16.   function xxx () {
  17.     v=document.getElementById('t').value, v=v? v: s.vlaue;
  18.     p=srcF.lastIndexOf('.'), newF=srcF.substring(0,p)+'.'+v;
  19.     new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  20.     close(); }
  21. </script>
复制代码
  注册表文件 test.reg 的内容相应调整如下
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\*\shell\修改文件扩展名]

  3. [HKEY_CLASSES_ROOT\*\shell\修改文件扩展名\command]
  4. @="cmd.exe /c start x:\\test\\test.hta \"%L\""
复制代码






点评

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

使用道具 举报

 楼主| 发表于 昨天 12:33 | 显示全部楼层
redyear2026 发表于 2026-3-29 11:29
再优化一步,只用一个 test.hta 脚本文件就可以了(以下代码存为 test.hta),用此还可避免以前所给方 ...

太感动了,有你这么热心的朋友!再次感谢!

只是我又有求了,真不好意思。
因为经常弄PE,所以就碰到注册表,需要一个“去除扩展名”的快捷键。如果能够增加一个“去除扩展名”的选项,就更完美了。谢谢!

2026-03-29_122653.png

回复

使用道具 举报

发表于 昨天 14:35 | 显示全部楼层
学习了
回复

使用道具 举报

发表于 昨天 15:38 | 显示全部楼层
xmzhqw 发表于 2026-3-29 12:33
太感动了,有你这么热心的朋友!再次感谢!

只是我又有求了,真不好意思。

新版代码如下存为 test.hta,试试吧

  1. <meta http-equiv='x-ua-compatible' content='ie=9'>
  2. <script>window.resizeTo(850, 180);</script>
  3. <hta:application id=v>
  4. <title>【更改文件扩展名】</title></br><center>
  5. 自定义扩展名:
  6. <input type="text" id=t value='' />
  7. 扩展名选项:
  8. <select id=s onclick='t.value=s.value'>
  9.    <option>txt</option>
  10.    <option>lst</option>
  11.    <option>csv</option>
  12.    <option>去除扩展名</option>
  13. </select>
  14. <input type=button id=b value='【确认】' onclick='xxx()'></center>
  15. <script>
  16.    srcF=v.commandLine.split('\"')[3];
  17.    function xxx () {
  18.       v=document.getElementById('t').value, v=v? v: s.vlaue;
  19.       p=srcF.lastIndexOf('.'), newF=(p==-1)? srcF: srcF.substring(0,p);
  20.       if (v != '去除扩展名') newF+='.'+v;
  21.       new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  22.       close(); }
  23. </script>
复制代码




点评

新版的在我这,无论是PE还是本地系统都无法运行。 旧的却可以正常运行,Win10还是Win11的PE都可以。 不敢再麻烦你了,能用就行。我最终采用旧的方案,再加一个去除扩展名的右键。 最终代码: 右键菜单为2个,一个是  详情 回复 发表于 昨天 16:52
回复

使用道具 举报

 楼主| 发表于 昨天 16:52 | 显示全部楼层
redyear2026 发表于 2026-3-29 15:38
新版代码如下存为 test.hta,试试吧

新版的在我这,无论是PE还是本地系统都无法运行。

旧的却可以正常运行,Win10还是Win11的PE都可以。
不敢再麻烦你了,能用就行。我最终采用旧的方案,再加一个去除扩展名的右键。
最终代码:
  1. <!-- :
  2. @echo off &if "%~1"=="" (set/p "f=拖入一个要更改扩展名的文件:") else set f=%~1
  3. if not exist %f% exit/b
  4. set/p="%f%"<nul|clip & start "" mshta "%~f0" &exit/b
  5. -->
  6. <meta http-equiv='x-ua-compatible' content='ie=9'>
  7. <script>window.resizeTo(850, 180);</script>
  8. <title>【更改文件扩展名】</title></br><center>
  9. 自定义扩展名:<input type="text" id=t value='' />
  10. 扩展名选项:
  11. <select id=s onclick='t.value=s.value'>
  12.   <option>7z</option>
  13.   <option>ahk</option>
  14.   <option>bat</option>
  15.   <option>cmd</option>
  16.   <option>dll</option>
  17.   <option>exe</option>
  18.   <option>html</option>
  19.   <option>ini</option>
  20.   <option>inf</option>
  21.   <option>jpeg</option>
  22.   <option>lua</option>
  23.   <option>mhtml</option>
  24.   <option>reg</option>
  25.   <option>rar</option>
  26.   <option>tst</option>
  27.   <option>vbs</option>
  28.   <option>xml</option>
  29.   <option>zip</option>
  30. </select>
  31. <input type=button id=b value='【确认更名】' onclick='xxx()'></center>
  32. <script>
  33.   function xxx () {
  34.     v=document.getElementById('t').value, v=v? v: s.vlaue;
  35.     srcF=clipboardData.getData('text').replace(/"/g,'');
  36.     p=srcF.lastIndexOf('.'), newF=srcF.substring(0,p)+'.'+v;
  37.     new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  38.     close(); }
  39. </script>
复制代码
右键菜单为2个,一个是你的代码,一个为增加的去除扩展名:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名]
  3. "SubCommands"=""
  4. "MUIVerb"="快速修改该文件后缀(&Z)"
  5. "icon"="X:\\Program Files\\Other\\text\\MoreSoft.dll,39"

  6. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\去掉后缀名]
  7. "MUIVerb"="去掉后缀名(扩展名)"
  8. "Icon"="X:\\Windows\\System32\\imageres.dll,2"
  9. "CommandFlags"=dword:00000020

  10. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\去掉后缀名\command]
  11. @="cmd /c for /f \"delims=\" %%a in (\"%1\") do rename \"%%a\" \"%%~na\""

  12. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\修改扩展名]
  13. "MUIVerb"="修改为其它的后缀名"
  14. "icon"="X:\\Program Files\\Other\\text\\MoreSoft.dll,39"
  15. "CommandFlags"=dword:00000020

  16. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\快速修改扩展名\shell\修改扩展名\command]
  17. @="pecmd Exec !X:\\Windows\\System32\\修改文件扩展名.bat \"%L\""
复制代码
再次表示感谢!!
回复

使用道具 举报

发表于 昨天 18:50 | 显示全部楼层
本帖最后由 redyear2026 于 2026-3-29 18:58 编辑
xmzhqw 发表于 2026-3-29 16:52
新版的在我这,无论是PE还是本地系统都无法运行。

旧的却可以正常运行,Win10还是Win11的PE都可以。

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

点评

感谢不怨其烦的解答! 是我眼花:hta 看成 bta 了。真不好意思。改一下,可以用了。完美极了!谢谢!!!  详情 回复 发表于 昨天 19:35
回复

使用道具 举报

发表于 昨天 19:20 | 显示全部楼层
xmzhqw 发表于 2026-3-29 16:52
新版的在我这,无论是PE还是本地系统都无法运行。

旧的却可以正常运行,Win10还是Win11的PE都可以。

再给一个验证版本,将其中的中文菜单名用英文字符*包裹成 *去除扩展名*,你再试试。

  1. <meta http-equiv='x-ua-compatible' content='ie=9'>
  2. <script>window.resizeTo(850, 180);</script>
  3. <hta:application id=v>
  4. <title>【更改文件扩展名】</title></br><center>
  5. 自定义扩展名:
  6. <input type="text" id=t value='' />
  7. 扩展名选项:
  8. <select id=s onclick='t.value=s.value'>
  9.    <option>txt</option>
  10.    <option>lst</option>
  11.    <option>csv</option>
  12.    <option>*去除扩展名*</option>
  13. </select>
  14. <input type=button id=b value='【确认】' onclick='xxx()'></center>
  15. <script>
  16.    srcF=v.commandLine.split('"')[3];
  17.    function xxx () {
  18.       v=document.getElementById('t').value, v=v? v: s.vlaue;
  19.       p=srcF.lastIndexOf('.'), newF=(p==-1)? srcF: srcF.substring(0,p);
  20.       if (v[0] != '*') newF+='.'+v;
  21.       new ActiveXObject('scripting.filesystemobject').MoveFile(srcF,newF);
  22.       close(); }
  23. </script>
复制代码




回复

使用道具 举报

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

感谢不怨其烦的解答!
是我眼花:hta 看成 bta 了。真不好意思。改一下,可以用了。完美极了!谢谢!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-30 19:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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