批处理之家's Archiver

wrz99 发表于 2011-7-26 16:46

BAT版NTFS文件锁定程序,设置文件权限,改名等

这是转的贴!
确实很好用![code]@echo off
@del c:\CSK.DLL /q
@echo on
@ECHO OFF
REM CACLS只是修改文件的访问权限。防删要先设置只读属性;不过完全锁定则不用预先设置属性;
REM 另外,要解除文件的所有属性也必须先用CACLS对文件进行解锁。

TITLE NTFS文件锁定程序 V1.3
mode con cols=68 lines=24
COLOR 2F

:BEGIN
SET LOOP=
SET GRADE=
SET ACTIVE=
CLS
ECHO.
ECHO               ╭────────────╮
ECHO        ╭────┤  NTFS文件锁定程序 V1.3 ├────╮
ECHO        │      ╰────────────╯        │
ECHO           │                                            │
ECHO           │  [1] 初级锁定(防删  只读  可改名  非隐藏)│
ECHO           │                                            │
ECHO         │  [2] 中级锁定(防删  只读  可改名  隐藏)  │
ECHO          │                                           │
ECHO         │  [3] 高级锁定(防删  禁读  禁改名  非隐藏)│
ECHO        │                                            │
ECHO        │  [4] 完全锁定(防删  禁读  禁改名  隐藏)  │
ECHO           │                                            │
ECHO           │  [5] 解  锁  (解除所有属性)              │
ECHO           │                                            │
ECHO           │  [6] 辅助工具      [7] 帮助     [0] 退出   │
ECHO           │                                            │
ECHO        ├──────────────────────┤
ECHO        │         注:只对NTFS分区的文件有效。       │
ECHO         ╰──────────────────────╯
ECHO.
SET Choice=
SET /P Choice=        请按数字选择您要进行的操作,然后按Enter键:

IF /I '%Choice%'=='1' GOTO LOOP1
IF /I '%Choice%'=='2' GOTO LOOP2
IF /I '%Choice%'=='3' GOTO LOOP3
IF /I '%Choice%'=='4' GOTO LOOP4
IF /I '%Choice%'=='5' GOTO LOOP5
IF /I '%Choice%'=='6' GOTO LOOP6
IF /I '%Choice%'=='7' GOTO LOOP7
IF /I '%Choice%'=='0' GOTO EXIT
GOTO BEGIN

:LOOP1
SET LOOP=LOOP1
SET GRADE=CHUJI
SET ACTIVE=0
GOTO LOCK
:CHUJI
ping 127.0.0.1 -n 1 >nul
echo y| cacls %Choice% /c /t /p everyone:f >nul 2>nul
attrib +r -h +s %Choice% >nul 2>nul
echo y| cacls %Choice% /c /t /p everyone:r >nul
SET ACTIVE=LOCKED
GOTO LOCK

:LOOP2
SET LOOP=LOOP2
SET GRADE=ZHONGJI
SET ACTIVE=0
GOTO LOCK
:ZHONGJI
ping 127.0.0.1 -n 1 >nul
echo y| cacls %Choice% /c /t /p everyone:f >nul 2>nul
attrib %Choice% +r +h +s >nul 2>nul
echo y| cacls %Choice% /c /t /p everyone:r >nul
SET ACTIVE=LOCKED
GOTO LOCK

:LOOP3
SET LOOP=LOOP3
SET GRADE=GAOJI
SET ACTIVE=0
GOTO LOCK
:GAOJI
ping 127.0.0.1 -n 1 >nul
echo y| cacls %Choice% /c /t /p everyone:f >nul 2>nul
attrib %Choice% +r -h +s >nul 2>nul
echo y| cacls %Choice% /D everyone >nul
SET ACTIVE=LOCKED
GOTO LOCK

:LOOP4
SET LOOP=LOOP4
SET GRADE=WANQUAN
SET ACTIVE=0
GOTO LOCK
:WANQUAN
ping 127.0.0.1 -n 1 >nul
echo y| cacls %Choice% /c /t /p everyone:f >nul 2>nul
attrib %Choice% +r +h +s >nul 2>nul
echo y| cacls %Choice% /D everyone >nul
SET ACTIVE=LOCKED
GOTO LOCK

:LOOP5
SET LOOP=LOOP5
SET GRADE=JIESUO
SET ACTIVE=0
GOTO LOCK
:JIESUO
ping 127.0.0.1 -n 1 >nul
echo y| cacls %Choice% /c /t /p everyone:f >nul 2>nul
attrib %Choice% -r -h -s >nul 2>nul
SET ACTIVE=UNLOCKED
GOTO LOCK

:LOCK
CLS
ECHO.
ECHO               ╭────────────╮
IF '%GRADE%'=='CHUJI' ECHO        ╭────┤        初级锁定        ├────╮
IF '%GRADE%'=='ZHONGJI' ECHO        ╭────┤        中级锁定        ├────╮
IF '%GRADE%'=='GAOJI' ECHO        ╭────┤        高级锁定        ├────╮
IF '%GRADE%'=='WANQUAN' ECHO        ╭────┤        完级锁定        ├────╮
IF '%GRADE%'=='JIESUO' ECHO        ╭────┤         解  锁         ├────╮
ECHO        │      ╰────────────╯        │
ECHO           │                                            │
IF '%GRADE%'=='CHUJI' ECHO           │       (防删  只读  可改名  非隐藏)       │
IF '%GRADE%'=='ZHONGJI' ECHO           │        (防删  只读  可改名  隐藏)        │
IF '%GRADE%'=='GAOJI' ECHO           │       (防删  禁读  禁改名  非隐藏)       │
IF '%GRADE%'=='WANQUAN' ECHO           │        (防删  禁读  禁改名  隐藏)        │
IF '%GRADE%'=='JIESUO' ECHO           │              (解除所有属性)              │
ECHO           │                                            │
IF '%GRADE%'=='JIESUO' ECHO        │          手工解锁请输manualunlock          │
ECHO           │                                            │
IF NOT '%GRADE%'=='JIESUO' ECHO           │                                            │
ECHO           │                                            │
IF '%ACTIVE%'=='0' ECHO          │ 请把文件(夹)直接拖到本窗口,然后按Enter键。│
IF '%ACTIVE%'=='1' ECHO          │            正在锁定,请稍等...             │
IF '%ACTIVE%'=='' ECHO          │            正在解锁,请稍等...             │
IF '%ACTIVE%'=='LOCKED' ECHO          │              恭喜!文件已锁定。            │
IF '%ACTIVE%'=='UNLOCKED' ECHO          │              恭喜!文件已解锁。            │
IF '%ACTIVE%'=='NOFILE' ECHO          │    输入的文件不存在! 请按任意键重新输入。  │
ECHO           │                                            │
ECHO           │                                            │
IF '%ACTIVE%'=='0' ECHO        │                 返回请输0                  │
IF '%ACTIVE%'=='1' ECHO          │                                            │
IF '%ACTIVE%'=='LOCKED' ECHO          │              请按任意键继续...             │
IF '%ACTIVE%'=='UNLOCKED' ECHO          │              请按任意键继续...             │
IF '%ACTIVE%'=='NOFILE' ECHO          │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO        ├──────────────────────┤
ECHO        │         注:只对NTFS分区的文件有效。       │
ECHO         ╰──────────────────────╯
ECHO.
IF '%ACTIVE%'=='1' GOTO %GRADE%
IF '%ACTIVE%'=='' GOTO %GRADE%
IF '%ACTIVE%'=='LOCKED' GOTO CONTINIUE
IF '%ACTIVE%'=='UNLOCKED' GOTO CONTINIUE
IF '%ACTIVE%'=='NOFILE' GOTO CONTINIUE
IF '%GRADE%'=='JIESUO' GOTO UNLOCK
SET Choice=
SET /P Choice=            需锁定的文件(夹)是:
IF '%Choice%'=='' GOTO %LOOP%
IF '%Choice%'=='0' GOTO BEGIN
IF '%Choice%'=='MANUALUNLOCK' GOTO MANUAL
IF '%Choice%'=='manualunlock' GOTO MANUAL
IF NOT EXIST %Choice% GOTO NOFILE
SET ACTIVE=1
GOTO LOCK

:UNLOCK
SET Choice=
SET /P Choice=            需解锁的文件(夹)是:
IF '%Choice%'=='' GOTO %LOOP%
IF '%Choice%'=='0' GOTO BEGIN
IF '%Choice%'=='MANUALUNLOCK' GOTO MANUAL
IF '%Choice%'=='manualunlock' GOTO MANUAL
IF NOT EXIST %Choice% GOTO NOFILE
SET ACTIVE=
GOTO LOCK

:CONTINIUE
PAUSE >NUL
GOTO %LOOP%

:MANUAL
START [url]http://hi.baidu.com/bigtoothcat/blog/item/e4d8926f9d9c32d281cb4a0b.html[/url]
GOTO %LOOP%

:NOFILE
SET ACTIVE=NOFILE
GOTO LOCK

:LOOP6
set pan=
SET ACTIVE=
CLS
ECHO.
ECHO               ╭────────────╮
ECHO        ╭────┤        辅助工具        ├────╮
ECHO        │      ╰────────────╯        │
ECHO           │                                            │
ECHO           │            [1] 显示隐藏文件                │
ECHO           │                                            │
ECHO         │            [2] 不显示隐藏文件              │
ECHO        │                                           │
ECHO         │            [3] 显示文件扩展名              │
ECHO        │                                            │
ECHO        │            [4] 不显示文件扩展名            │
ECHO           │                                            │
ECHO           │            [5] 查看分区格式                │
ECHO           │                                            │
ECHO           │            [0] 返回上级菜单                │
ECHO        │                                            │
ECHO         ╰──────────────────────╯
ECHO.
SET Choice=
SET /P Choice=       请按数字选择您要进行的操作,然后按Enter键:

IF /I '%Choice%'=='1' GOTO LOOP61
IF /I '%Choice%'=='2' GOTO LOOP62
IF /I '%Choice%'=='3' GOTO LOOP63
IF /I '%Choice%'=='4' GOTO LOOP64
IF /I '%Choice%'=='5' GOTO LOOP65
IF /I '%Choice%'=='0' GOTO BEGIN
GOTO LOOP6

:LOOP61
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t reg_dword /d 1 /f >NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 0 /f >NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden /t reg_dword /d 1 /f >NUL
SET ACTIVE=SHOW1
GOTO SHOW

:LOOP62
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t reg_dword /d 00000000 /f >NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 00000001 /f >NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden /t reg_dword /d 00000000 /f >NUL
SET ACTIVE=HIDE1
GOTO SHOW

:LOOP63
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 00000000 /f >NUL
SET ACTIVE=SHOW2
GOTO SHOW

:LOOP64
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 00000001 /f >NUL
SET ACTIVE=HIDE2
GOTO SHOW

:LOOP65
set pan=
SET ACTIVE=FS1
GOTO SHOW
:LOOP651
set/p pan=                           要查看的分区是:
IF "%pan%"=="0" GOTO LOOP6
IF "%pan%"=="" GOTO LOOP65
IF EXIST %pan%: GOTO LOOP652
rem FOR %%a IN (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) DO IF "%%a"=="%pan%" GOTO LOOOP652
SET ACTIVE=FS3
GOTO SHOW
:LOOP652
for /f "tokens=1,2" %%i in ('chkntfs %pan%:') do (
    set var=%%j
    goto type
)
goto :eof
:type
set var=%var:。=%
SET ACTIVE=FS2
GOTO SHOW

:SHOW
SET Choice=
CLS
ECHO.
ECHO               ╭────────────╮
ECHO        ╭────┤        辅助工具        ├────╮
ECHO        │      ╰────────────╯        │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO        │                                           │
IF '%ACTIVE%'=='SHOW1' ECHO           │       显示隐藏文件成功,请刷新文件夹。     │
IF '%ACTIVE%'=='HIDE1' ECHO           │      不显示隐藏文件成功,请刷新文件夹。    │
IF '%ACTIVE%'=='SHOW2' ECHO           │      显示文件扩展名成功,请刷新文件夹。    │
IF '%ACTIVE%'=='HIDE2' ECHO           │     不显示文件扩展名成功,请刷新文件夹。   │
IF '%ACTIVE%'=='FS1' ECHO           │请输入要查看的盘符(不带冒号),然后按Enter键。│
IF '%ACTIVE%'=='FS2' ECHO           │         %pan%盘的文件系统类型是 %var% 。        │
IF '%ACTIVE%'=='FS3' ECHO           │        输入的分区不存在,请重新输入。      │
ECHO        │                                            │
IF '%ACTIVE%'=='FS1' ECHO           │                 返回请输0。                │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO           │                                            │
ECHO        │                                            │
ECHO         ╰──────────────────────╯
ECHO.
IF NOT '%ACTIVE%'=='FS1' ECHO                            按任意键继续...
IF '%ACTIVE%'=='FS1' GOTO LOOP651
PAUSE >NUL
IF '%ACTIVE%'=='FS2' GOTO LOOP65
IF '%ACTIVE%'=='FS3' GOTO LOOP65
GOTO LOOP6

:LOOP7
CLS
ECHO.
ECHO                             使用说明
ECHO.
ECHO     当需要改变锁定方式时直接选用其他锁定方式即可。禁读时还可以防止别人复制;锁定只是修改了文件的访问权限,因此它不会改写注册表,不创建隐藏文件夹,不改变文件结构,完全不会损坏原有数据,而且这个过程是不需要输入密码的,除非您给本程序加入启动密码,否则任何使用本程序的人都可以解锁文件。另外,锁定只是相对Windows环境而言,在纯DOS环境仍然是可以访问和删除的;隐藏也只是改变文件的属性,所以要实现绝对的锁定和隐藏请使用其他软件,本程序只适合忽悠小朋友。
ECHO.
ECHO     本程序免费使用,禁止利用本软件进行任何商业盈利活动,否则产生的一切后果将由您自己承担!
ECHO.
ECHO 如需For WinPE版本 请访问软件主页:[url]http://hi.baidu.com/bigtoothcat[/url]
ECHO.
ECHO 版权所有 (c)2009,Bigtoothcat 保留所有权利      2009年06月12日
ECHO.
ECHO 请按任意键返回...
PAUSE >NUL
GOTO BEGIN

:EXIT
SET GRADE=
SET Choice=
SET LOOP=
SET ACTIVE=
CLS
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO                          更多精彩软件尽在
ECHO.
ECHO                      ☆大牙猫电脑维护工作室☆
ECHO                   [url]http://hi.baidu.com/bigtoothcat[/url]
ECHO.
ECHO.
ECHO.
ping 127.0.0.1 -n 2 >nul
del %0%[/code]

wrz99 发表于 2011-7-26 22:15

哦,已编辑了,真不知道代码放到code标签里才行!

lengyff 发表于 2013-8-5 15:41

好东东,谢谢楼主

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.