返回列表 发帖

[数值计算] [已解决]批处理代码,硬盘容量计算,如何实现常规数字显示?

本帖最后由 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
exitCOPY
运行后显示如下:


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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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="
        )
    )
)
pauseCOPY
最新版本的Windows 11 专业版24h2,不内置wmic命令了?

TOP

感谢楼主分享
还有win11 wmic貌似默认不启用 ,得自己手动启用才能用

TOP

本帖最后由 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/bCOPY
1

评分人数

TOP

回复 4# aloha20200628


    谢谢 ,win10,win11 24h2系统,测试成功。

TOP

返回列表