无忧启动论坛

标题: 显示、隐藏分区批处理 [打印本页]

作者: 2012raps    时间: 2012-12-9 22:22
标题: 显示、隐藏分区批处理
显示、隐藏分区批处理

本批处理仅支持 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 编辑 ]
作者: 2012196012    时间: 2012-12-10 21:06
dddd1111111111
作者: 19720205    时间: 2012-12-11 11:16
XP下%systemroot%\System32\zh-CN\diskpart.exe.mui不在在吧,还有diskpart.exe.mui采用的什么版本,在XP下能正常运行吗?
作者: 2012raps    时间: 2012-12-11 19:51
标题: 回复 #3 19720205 的帖子
今天测试了一下,这个在XP 下无法运行




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3