
标题: [数值计算] [已解决]批处理代码,硬盘容量计算,如何实现常规数字显示? [打印本页]
作者: ygqiang 时间: 2024-10-24 15:54 标题: [已解决]批处理代码,硬盘容量计算,如何实现常规数字显示?
本帖最后由 ygqiang 于 2024-11-29 00:24 编辑
[已解决]批处理代码,硬盘容量计算,如何实现常规数字显示?
比如32G\128G\256G\500G\1T- @echo off & setlocal enabledelayedexpansion
- echo 代码开始
- cls
-
- echo. 协议 机械/固态 接口
- set "_NVMe=NVMe====SSD ::::::m.2"
- set "_USB=USB"
- set "_SATA=SATA====HDD/SSD::::::SATA-MSATA-m.2"
- for /f "tokens=2,4,5" %%a in ('"echo list disk|diskpart|findstr /irc:"磁盘 *[0-9]""') do (
- for /f "tokens=3" %%i in ('"(echo sel disk %%a & echo detail disk & echo list part)|diskpart|findstr /irc:"类型 *:""') do (
- if defined _%%i echo.&echo.&echo Disk%%a Type: !_%%i! %%b %%c
- )
- )
-
- pause >nul
- exit
复制代码
运行后显示如下:
Disk0 Type: SATA====HDD/SSD::::::SATA-MSATA-m.2 465 GB
Disk1 Type: NVMe====SSD ::::::m.2 238 GB
Disk2 Type: USB 931 GB
Disk3 Type: USB 117 GB
Disk4 Type: USB 28 GB
作者: ygqiang 时间: 2024-10-24 15:56
本帖最后由 ygqiang 于 2024-10-29 15:51 编辑
参考下面的代码,可以显示常规容量,256G\500G- @echo off
- setlocal enabledelayedexpansion
-
- COLOR 04
- COLOR 84
-
- COLOR f4
- COLOR fc
- COLOR 7c
- COLOR 74
- echo.
- echo.
- echo --------------硬盘信息如下:
- echo.
- set "StrDrive="
- for /f "tokens=1* delims==" %%a in ('"wmic DiskDrive where MediaType='Fixed hard disk media' get Model,Size /value | findstr ="') do (
- if "%%a" == "Model" (
- for /f %%i in ("%%b") do (
- set StrDrive=!StrDrive!,品牌:%%i
- )
- ) else if "%%a" == "Size" (
- for /f "delims=" %%i in ("%%b") do (
- set SizeGB=%%i
- set /a SizeGB=!SizeGB:~, -6!/1000
- set StrDrive=!StrDrive!,容量:!SizeGB!GB
- set "StrDrive=!StrDrive:~1!"
- echo,!StrDrive!
- set "StrDrive="
-
- )
- )
- )
-
-
- pause
复制代码
最新版本的Windows 11 专业版24h2,不内置wmic命令了?
作者: Five66 时间: 2024-11-27 20:51
感谢楼主分享
还有win11 wmic貌似默认不启用 ,得自己手动启用才能用
作者: aloha20200628 时间: 2024-11-27 21:17
本帖最后由 aloha20200628 于 2024-11-27 21:23 编辑
回复 2# ygqiang
若 wmic 真是彻底接棒给 powershell,批处就直接调用 powershell 功能了...- @echo off &setlocal enabledelayedexpansion
- for /f "tokens=1-2 delims=: " %%a in (
- 'powershell "get-physicaldisk|select *"^|findstr /ib "deviceid bustype size" '
- ) do if /i "%%a"=="size" (
- for /f %%v in ('powershell "[math]::round(%%b/1gb)" ') do echo,Disk!deviceid! !bustype! %%vGB
- ) else set "%%a=%%b"
- pause&exit/b
复制代码
作者: ygqiang 时间: 2024-11-27 21:50
回复 4# aloha20200628
谢谢 ,win10,win11 24h2系统,测试成功。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |