吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 911|回复: 19
上一主题 下一主题
收起左侧

[其他原创] 【批处理】右键菜单管理脚本

  [复制链接]
跳转到指定楼层
楼主
沉默酱紫 发表于 2026-1-3 18:53 回帖奖励
上个月想更改右键菜单一些选项,用Regedit太麻烦就写了这个批处理
如果懒得复制可以在底部下载附件解压即可

代码:
[Bash shell] 纯文本查看 复制代码
@echo off & chcp 65001 & color 1f
fltmc >nul || echo 请右键批处理以管理员身份运行! && timeout /t 3 /nobreak && exit

:menu
cls & title 右键菜单管理脚本
setlocal enabledelayedexpansion

set /a num=0
set /a value=0
set /a numid=0
set /a delname=0
set /a numback=0

echo ---------------------------------------------------------------------------------------------
echo 最后更新:2025年12月18日 by:沉默酱紫
echo ---------------------------------------------------------------------------------------------
echo 请输入数字使用对应选项:
echo -[1]桌面右键-
echo -[2]文件右键-
echo -[3]文件夹右键-
echo -[4]文件夹背景右键-
echo -[5]磁盘分区右键-
echo -[6].exe文件右键-
echo -[00]退出批处理-
echo ---------------------------------------------------------------------------------------------

set /p num=
if "!num!"=="0" goto :menu
if "!num!"=="1" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :oneadd
    if "!numid!"=="2" goto :onedel
    if "!numid!"=="3" goto :onereg
    exit
)
if "!num!"=="2" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :twoadd
    if "!numid!"=="2" goto :twodel
    if "!numid!"=="3" goto :tworeg
    exit
)
if "!num!"=="3" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :threeadd
    if "!numid!"=="2" goto :threedel
    if "!numid!"=="3" goto :threereg
    exit
)
if "!num!"=="4" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :fouradd
    if "!numid!"=="2" goto :fourdel
    if "!numid!"=="3" goto :fourreg
    exit
)
if "!num!"=="5" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :fiveadd
    if "!numid!"=="2" goto :fivedel
    if "!numid!"=="3" goto :fivereg
    exit
)
if "!num!"=="6" (
    echo 你需要添加或删除右键选项: -[1]添加 [2]删除 [3]打开注册表- 按其他则退出
    set /p numid=
    if "!numid!"=="0" goto :menu
    if "!numid!"=="1" goto :sixadd
    if "!numid!"=="2" goto :sixdel
    if "!numid!"=="3" goto :sixreg
    exit
)
if "!num!"=="00" endlocal & exit
goto :menu

rem ==============================================================================================

:oneadd
cls & title 给桌面右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!\command" /f
reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :oneadd
) else (
    cls & goto :menu
)
exit

:onedel
reg query "HKEY_CLASSES_ROOT\DesktopBackground\Shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_CLASSES_ROOT\DesktopBackground\Shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :onedel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:onereg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_CLASSES_ROOT\DesktopBackground\Shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_CLASSES_ROOT\DesktopBackground\Shell"
    cls & goto :menu
)
exit

rem ==============================================================================================

:twoadd
cls & title 给文件右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!\command" /f
reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_CLASSES_ROOT\*\shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :twoadd
) else (
    cls & goto :menu
)
exit

:twodel
reg query "HKEY_CLASSES_ROOT\*\shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_CLASSES_ROOT\*\shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :twodel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:tworeg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_CLASSES_ROOT\*\shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_CLASSES_ROOT\*\shell"
    cls & goto :menu
)
exit

rem ==============================================================================================

:threeadd
cls & title 给文件夹右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!\command" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :threeadd
) else (
    cls & goto :menu
)
exit

:threedel
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :threedel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:threereg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell"
    cls & goto :menu
)
exit

rem ==============================================================================================

:fouradd
cls & title 给文件夹背景右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!\command" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :fouradd
) else (
    cls & goto :menu
)
exit

:fourdel
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :fourdel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:fourreg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell"
    cls & goto :menu
)
exit

rem ==============================================================================================

:fiveadd
cls & title 给磁盘分区右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!\command" /f
reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_CLASSES_ROOT\Drive\shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :fiveadd
) else (
    cls & goto :menu
)
exit

:fivedel
reg query "HKEY_CLASSES_ROOT\Drive\shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_CLASSES_ROOT\Drive\shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :fivedel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:fivereg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_CLASSES_ROOT\Drive\shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_CLASSES_ROOT\Drive\shell"
    cls & goto :menu
)
exit

rem ==============================================================================================

:sixadd
cls & title 给.exe文件右键添加选项
echo ---------------------------------------------------------------------------------------------
echo 注册表键的名字:字母数字或组合
set /p keyname=
if not "!keyname!"=="" (
    reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!" /f
) else (
    cls & goto :menu
)
echo ---------------------------------------------------------------------------------------------
echo 在右键菜单中显示的名字:
set /p default=
reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!" /ve /d "!default!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项打开的程序的路径:如c:\xx\xx.exe
set /p route=
reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!\command" /f
reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!\command" /ve /d "!route!" /f
echo ---------------------------------------------------------------------------------------------
echo 选项显示的图标的路径:按回车则是打开的程序的图标
set /p ico=
if not "!ico!"=="" (
    reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!" /v icon /t reg_expand_sz /d "!ico!" /f
) else (
    reg add "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!keyname!" /v icon /t reg_expand_sz /d "!route!" /f
)
echo ---------------------------------------------------------------------------------------------
echo 已添加完毕,是否继续添加: -[1]继续添加,按其他则返回开头-
set /p numback=
if "!numback!"=="1" (
    set /a numback=0
    cls & goto :sixadd
) else (
    cls & goto :menu
)
exit

:sixdel
reg query "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell"
echo ---------------------------------------------------------------------------------------------
echo 你想删除的键的名字:Shell\后面的值
set /p delname=
if not "!delname!"=="" (
    reg delete "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\!delname!" /f
    echo 已删除!delname! & echo 是否继续删除: -[1]继续删除,按其他则返回开头-
    set /p value=
    if "!value!"=="1" (
        set /a value=0
        cls & goto :sixdel
    ) else (
        cls & goto :menu
    )
) else (
    cls & goto :menu
)
exit

:sixreg
cd /d c:\windows\
if not exist regjump.exe (
    echo HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell\ | clip
    echo 已将地址复制到剪切板并为你打开了注册表
    regedit
    cls & goto :menu
) else (
    regjump "HKEY_CLASSES_ROOT\SystemFileAssociations\.exe\shell"
    cls & goto :menu
)
exit

rem ==============================================================================================


解压密码是52pojie
右键选项.zip (2.02 KB, 下载次数: 92)

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
huan12345 + 1 + 1 热心回复!
weidechan + 1 谢谢@Thanks!
LDVE + 1 + 1 用心讨论,共获提升!
lyz950721 + 1 谢谢@Thanks!
注册个id + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
bachelor66 发表于 2026-1-4 09:55
这还得自己熟悉注册表,得知道哪些项对应哪个,更麻烦了                              
推荐
LDVE 发表于 2026-1-4 08:53
本帖最后由 LDVE 于 2026-1-4 08:58 编辑

不要被代码吓住   按黑窗口提示操作即可

我也有个bat版的,右键bat添加,注册表手动删除(注册表有收藏功能,所以这个删除操作也很简单)
沙发
bingtuzibb 发表于 2026-1-3 22:40
3#
注册个id 发表于 2026-1-3 22:47
测试能用
4#
mindy11 发表于 2026-1-3 23:15
测试能用
5#
jesseding 发表于 2026-1-4 01:08
太好了,终于能治理右键牛皮藓了
6#
天云尊者 发表于 2026-1-4 02:30
感谢分享,比找注册表省事不少
7#
lllyyysss77 发表于 2026-1-4 03:06
感谢🙏🏻这个真的好
8#
zhufuan 发表于 2026-1-4 04:47
谢谢,有最后的使用效果图吗
10#
duoduo2016 发表于 2026-1-4 08:57
谢谢分享。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-1-6 10:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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