add-右键菜单添加工具
@echo off &title 右键菜单添加工具
REM set "rootMenu=HKEY_CLASSES_ROOT"
set "rootMenu=HKCR"
REM set "key=*\shell" REM 文件右键菜单
REM set "key=Directory\shell" REM 文件夹右键菜单
REM set "key=DesktopBackground\shell" REM 桌面右键菜单
set "key=Directory\background\shell" REM 背景右键菜单,包含桌面右键菜单
set "menuName=menuName1"
set "cmd=cmd.exe /c \"echo hello\""
set "icon=%SystemRoot%\system32\imageres.dll,-5362" REM 索引与导出文件的索引保持一致即可使用对应ico
reg add "%rootMenu%\%key%\%menuName%" /d "%menuName%" /f
reg add "%rootMenu%\%key%\%menuName%\command" /d "%cmd%" /f
reg add "%rootMenu%\%key%\%menuName%" /v "Icon" /d "%icon%" /f
echo 菜单添加成功
del-右键菜单添加工具
@echo off &title 右键菜单添加工具
REM set "rootMenu=HKEY_CLASSES_ROOT"
set "rootMenu=HKCR"
REM set "key=*\shell" REM 文件右键菜单
REM set "key=Directory\shell" REM 文件夹右键菜单
REM set "key=DesktopBackground\shell" REM 桌面右键菜单
set "key=Directory\background\shell" REM 背景右键菜单,包含桌面右键菜单
set "menuName=menuName1"
call :DelRegByQueryResult "%rootMenu%\%key%\%menuName%"
pause
exit /b
:DelRegByQueryResult
reg query %1 >nul 2>&1
if %errorlevel% == 0 (
echo 注册表 %1 存在,准备删除...
reg delete %1 /f
echo 注册表 %1 已删除。
) else (
echo 注册表 %1 不存在,无需删除。
)
echo.
goto :eof
add-文件夹背景背景右键菜单添加
@echo off
setlocal enabledelayedexpansion
REM 以管理员权限运行此脚本
if not "%~nx0"=="%~n0.bat" (echo 请以管理员身份运行此脚本 && pause && exit /b)
set filepath=%~dp0bin\
pushd %~dp0bin
:: 设置注册表路径
set "reg_path=HKLM\SOFTWARE\Classes\Directory\background\shell"
set "key_prefix=RightMenu_"
for /f "delims=" %%a in ('dir /a-d/b *.bat') do (
if not %%a == %~nx0 (
set "name=%%a"
set "key_name_in_menu=!name:~0,-4!"
set "key_name_in_reg=!key_prefix!!key_name_in_menu!"
set "exe_path=%%~fa"
REM 请注意,注册表编辑器(reg.exe)在路径中不支持通配符或某些特殊字符,确保您的变量值符合这些要求。
REM 1.创建键key
REM 2.创建键key的命令,由于你设置的是文件夹背景的右键菜单项,%1 将代表用户右键点击的文件夹的路径
reg add "!reg_path!\!key_name_in_reg!" /T REG_SZ /d "!key_name_in_menu!" /f
reg add "!reg_path!\!key_name_in_reg!\Command" /T REG_SZ /d "!exe_path! !filepath!"
REM reg add "!reg_path!\!key_name_in_reg!\Command" /T REG_SZ /d "\"!exe_path!\" \"%1\"" /f >nul 2>&1
echo Added background menu for !name!
)
)
REM 在注册表中启用长路径支持,允许使用超过260个字符的路径
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem /T REG_DWORD /v LongPathsEnabled /d 1 /f
popd
timeout /t 5 /nobreak
exit /b
del-文件夹背景背景右键菜单添加
@echo off
setlocal enabledelayedexpansion
pushd %~dp0bin
:: 设置注册表路径
set "reg_path=HKLM\SOFTWARE\Classes\Directory\background\shell"
set "key_prefix=ZhhRightMenu_"
for /f "delims=" %%a in ('dir /a-d/b *.bat') do (
if not %%a == %~nx0 (
set name=%%a
set key_name_in_reg=!key_prefix!!name:~0,-4!
reg delete !reg_path!\!key_name_in_reg! /f
echo Delete key: !key_name_in_reg!
)
)
REM 删除长路径支持设置(可选)
reg delete HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem /v LongPathsEnabled /f
popd
timeout /t 5 /nobreak
exit /b