@echo off&setlocal enabledelayedexpansion
title 驱动器隐藏
:setvar
set needhidedrv=暂未输入。
set value=0
set str=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
:HIDEDRV
cls
set n=1
set drv=endinput
echo 已输入的需要隐藏的驱动器:
echo ===============================================================================
echo.
echo.
echo %needhidedrv%
echo.
echo.
echo ===============================================================================
echo.
echo 例如需隐藏C盘,请输入c或C,回车。如果需输入多个盘符就继续输入,如果想完成输入就直接按下回车,输入all为隐藏全部,在初始状态下直接回车则取消隐藏
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.
set /p drv=请输入:
if "%drv%"=="endinput" goto exec
if "%drv%"=="all" set value=0X3FFFFFF&goto exec
if "%needhidedrv%"=="暂未输入。" set needhidedrv=
for %%i in (%str%) do call set drv=%%drv:%%i=%%i%%
for %%i in (%needhidedrv%) do (if "%drv%"=="%%i" goto HIDEDRV)
for %%i in (%str%) do if "%drv%"=="%%i" (goto :next) else (set /a n=n+n)
if "%needhidedrv%"=="" set needhidedrv=暂未输入。
goto HIDEDRV
:next
set needhidedrv=%needhidedrv%%drv%
set /a value=%value%+%n%
goto HIDEDRV
:exec
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /f /v NoDrives /t REG_DWORD /d %value%
taskkill /f /im explorer.exe >nul & start explorer &cls
echo 操作完成,按任意键退出
pause>nul
exit&exit
注释一下,核心代码就是3条for语句
第一条用来小写转换为大写
第二条用来判断是否重复输入了
第三条用来为每个盘符赋值的
特别感谢netbenton,和那位给出个示例代码的大哥
非常感谢netbenton你,令我感悟到了新一步
回复用gpupdate那个,我的杀毒软件会警报啊。。。
============版主请看我的跟帖
[ Last edited by darkkid on 2009-4-15 at 22:07 ]




