|
本帖最后由 dos时代菜鸟 于 2018-5-31 22:28 编辑
我基本上明白你的意思了
看这个吧
hd3y2.zip
(960 Bytes, 下载次数: 2)
,运行效率 有点儿低,因为要频繁调用 diskpart 对每一个分区进行 探测。
hd3y2.cmd
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- color 1f
- mode con: cols=150 LINES=30
- title 获取硬盘分区序列.....
- set "s1=磁盘"
- set "s2=分区"
- set "s3=卷"
- CLS
- echo.
- >%temp%\part_0.txt echo.
- >%temp%\diskpart.s echo list disk
- set /a No=0
- echo 硬盘分区序列
- echo --------------------------------------------------------------------------------------------------
- echo No. Vol HD:P LTR 格式 大小 标签 类型_状态_信息_偏移
- for /f "tokens=1,2,3,4,5" %%a in ('diskpart /s %temp%\diskpart.s') do (
- if "%%a"=="!s1!" (if not "%%b"=="###" (
- set "disk=%%b"
- (
- echo select disk !disk!
- echo detail disk
- echo list part
- )>%temp%\diskpart.s
- set /a Nod=0
- for /f "delims=" %%u in ('diskpart /s %temp%\diskpart.s') do (
- set /a Nod+=1
- if !Nod! equ 5 (
- echo --- --- ----- --- ----- -------- ------------ ------------------------ Disk#%%b %%d%%e %%c(%%~u)
- )
- for /f "tokens=1,2,3,4,5,6,7" %%e in ("%%~u") do (
- set "size= %%h %%i"
- if "%%e"=="!s2!" (if not "%%f"=="###" (
- (
- echo select disk !disk!
- echo select part %%f
- echo list vol
- )>%temp%\diskpart.s
- set "lv0="
- for /f "tokens=1,2,*" %%l in ('diskpart /s %temp%\diskpart.s') do (
- if "%%l"=="*" ( if "%%m"=="!s3!" set "lv0=%%n" )
- )
- set /a No+=1
- set "No1= !No!"
- set hdp=!disk!:%%f
- set size=!size:~-8!
- if not "!lv0!"=="" (
- for /f "tokens=1" %%r in ("!lv0!") do (set "vol= %%r")
- set ltr=!lv0:~6,1!
- if "!ltr!"==" " set ltr=*
- set fmt=!lv0:~23,5!
- set lable=!lv0:~10,12!
- for /f "tokens=1,2" %%r in ("!lv0:~51!") do (set other=%%r_%%s)
- echo !No1:~-3! !vol:~-3! !hdp! !ltr! !fmt! !size! !lable! %%g_!other! %%j%%k
- ) else (
- echo !No1:~-3! * !hdp! !size! %%g_ %%j%%k
- )
- ))
- )
- )
- ))
- )
- echo --------------------------------------------------------------------------------------------------
- pause
复制代码
1,获取硬盘列表
2,获取每个硬盘分区列表
3,获取分区对应的 卷信息,卷标,格式,信息,状态。。。。
4,将掌握的 各个分区信息 显示出来。
本来windows 不支持的 分区,也要把信息 弄一下,这样就影响效率了。
|
|