本帖最后由 dong3626 于 2023-4-17 10:40 编辑
具体需求在下面代码中- @echo off
- ::自动请求以管理员权限运行
- if /i "%systemdrive%"=="C:" reg query HKU\S-1-5-20>nul 2>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "%*", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul
-
- SetLocal EnableDelayedExpansion
- ::设置批处理所在目录
- set DIR_CUR=%~dp0
- cd %DIR_CUR%
-
- ECHO.
- ECHO 当前挂载硬盘:
- ECHO ---------------------------------------------------------
- echo.
- echo 序号 格式 协议 容量 型号 <--- 硬盘大小可不要
- echo --- --- ---- ------ --------
- ECHO 0 GPT NVME 256GB WD256
- ECHO 1 MBR SATA 1000GB WD1000
- ECHO.
- echo 序号 盘:区 大小 盘符 FS EFI/MSR 系统 标签 <--- 标签可不要
- echo --- ----- ------ --- ----- ------- ------ ------
- echo 1 0:1 500MB Z FAT32 EFI EFI
- echo 2 0:2 128MB MSR
- echo 3 0:3 100GB C NTFS WIN10 WIN
- echo 4 0:4 100GB Mac
- echo 5 0:5 37GB D exFat SHARE
- echo 6 1:1 500GB E NTFS
- echo 7 1:2 456GB F NTFS
- ECHO ---------------------------------------------------------
- echo 可根据磁盘分区编号选择,返回分区的详细信息
- echo.
-
- :: 保存磁盘信息
- :: set DISK_N
- :: 保存分区信息
- :: set PART_N
-
- for /f "skip=9 tokens=2 delims= " %%a in ('echo list disk^|diskpart') do (
- rem 下面提取硬盘信息
- for /f "delims=" %%b in ('(echo sel disk %%a ^& echo detail disk^)^|diskpart') do (
- rem 取三行,硬盘型号,id->硬盘分区格式,磁盘类型
- set "cl=%%b"
- set /a l+=1
- if "!cl:~0,5!"=="在计算机上" (set /a t=!l!+4 & set /a i=!l!+5 & set /a p=!l!+6)
- if !l!==!t! (set tt=!cl!)
- if !l!==!i! (set did=!cl:~7! & (if "!did:-=!"=="!did!" (set "ii=MBR") else (set "ii=GPT")))
- if !l!==!p! (set pp=!cl:~7! & (echo. & echo --- 硬盘:%%a !pp! !ii! !tt! ---) & set "DISK_%%a= %%a !pp! !ii! !tt!")
- )
- rem 下面遍历每个分区,并提取合并处理每个分区的信息
- for /f "tokens=2 delims= " %%c in ('(echo sel disk %%a ^& echo list part ^& exit^)^|diskpart^|findstr /i "系统 主要 未知 保留 逻辑"') do (
- set /a PARTT+=1
- :: echo 当前分区 %%a:%%c
- for /f "delims=" %%d in ('(echo sel disk %%a ^& echo list part ^& echo sel part %%c ^& echo det part^)^|diskpart') do (
- :: echo %%a:%%c 分区信息 %%d
- set "cll=%%d"
- set /a ll+=1
- if "!cll:~0,7!"==" 分区 " (
- for /f "tokens=2-5 delims= " %%e in ("!cll!") do (
- if %%c==%%e (set tinfo=%%a:%%c %%f %%g%%h)
- )
- )
- :: if "!cll:~0,2!"=="类型" (echo !cll:~6! 提取对照生成准确文件系统)
- if "!cll:~0,4!"=="字节偏移" (set /a lll=!ll!+3 & set /a kkk=!ll!+2)
- if !ll!==!lll! (if "!cll:~0,1!"=="*" (echo !PARTT! !tinfo! !cll:~13,23!))
- if !ll!==!kkk! (if "!cll:~0,1!"=="D" (echo !PARTT! !tinfo!))
- )
- )
- )
-
-
- echo.
-
- pause>nul
复制代码
|