|
显示、隐藏分区批处理
本批处理仅支持 windows 7 以上版本的操作系统(包括相应版本的PE)XP 2003 环境下不可用。
可对分区进行隐藏、显示操作。隐藏方式为OEM分区。
代码如下,将文件保存到文本文档,并将后缀改为“.cmd”或“.bat”(不包括引号)。
@echo off
if not exist %systemroot%\System32\zh-CN\diskpart.exe.mui exit
setlocal enabledelayedexpansion
>%temp%\d.log echo list disk
set /a "n=0"&for /f "tokens=2" %%i in ('%systemroot%\system32\diskpart.exe /s %temp%\d.log^|%systemroot%\system32\find.exe "GB"') do set /a "n+=1"&set "d!n!=%%i"
if !n!==1 (set /a "isd=0") else (call :sd)
set "tp="
:sp
>%temp%\d.log (echo select disk !isd!&echo list partition)
set /a "m=0"&for /f "tokens=2,3,4,5" %%i in ('%systemroot%\system32\diskpart.exe /s %temp%\d.log^|%systemroot%\system32\find.exe "分区 "') do (if "%%i" neq "0" set /a "m+=1"&set "p!m!=%%i"&set "l!m!=%%j"&set "s!m!=%%k"&set "b!m!=%%l")
>%temp%\d.log echo select disk !isd!
for /l %%i in (1,1,!m!) do >>%temp%\d.log (echo select partition %%i&echo detail partition)
set /a "l=0"&for /f "delims=: tokens=2" %%i in ('%systemroot%\system32\diskpart.exe /s %temp%\d.log^|%systemroot%\system32\find.exe "类型 :"') do (set /a "l+=1"
if "%%i"==" 07" set y!l!=普通
if "%%i"==" 12" set y!l!=隐藏
if "%%i" neq " 07" if "%%i" neq " 12" set y!l!=未知)
cls&echo.&echo 分区 ### 类型 大小 状态&echo ------------- ---------------- ------- -------
for /l %%i in (1,1,!m!) do echo 分区 !p%%i! !l%%i! !s%%i! !b%%i! !y%%i!
echo.
if not defined tp (
echo 将对相应编号的分区进行显示、隐藏的转换
set "isp="&set /p isp=输入分区编号:
for /l %%i in (1,1,!m!) do (if "!p%%i!"=="!isp!" set tp=!isp!)
if not defined tp call :err&goto sp
call :cid
>%temp%\d.log (echo select disk !isd!&echo select partition !isp!&echo set id=!id! override)
cls&echo.&echo 处理中...
>nul %systemroot%\system32\diskpart.exe /s %temp%\d.log
goto sp) else (echo.&echo 请按任意键退出&pause>nul&exit)
:sd
cls&echo.
for /f "skip=4 tokens=*" %%i in ('%systemroot%\system32\diskpart.exe /s %temp%\d.log') do echo %%i
echo.
set "td="&set "isd="&set /p isd=输入磁盘编号:
for /l %%i in (1,1,!n!) do (if "!d%%i!"=="!isd!" set td=!isd!)
if not defined td call :err&goto sd
goto :eof
:err
cls&echo.&echo 输入错误,请重新输入&pause>nul
goto :eof
:cid
if "!y%isp%!"=="普通" set "id=12"&goto :eof
if "!y%isp%!"=="隐藏" set "id=07"&goto :eof
if "!y%isp%!" neq "普通" if "!y%isp%!" neq "隐藏" set "tp="&call :err&goto sp
[ 本帖最后由 2012raps 于 2012-12-11 19:53 编辑 ] |
|