找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14295|回复: 4

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

[复制链接]
发表于 2024-10-24 15:54:55 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2024-11-29 00:24 编辑

[已解决]批处理代码,硬盘容量计算,如何实现常规数字显示?
比如32G\128G\256G\500G\1T


  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始
  3. cls

  4. echo.                协议   机械/固态    接口
  5. set "_NVMe=NVMe====SSD    ::::::m.2"
  6. set "_USB=USB"
  7. set "_SATA=SATA====HDD/SSD::::::SATA-MSATA-m.2"
  8. for /f "tokens=2,4,5" %%a in ('"echo list disk|diskpart|findstr /irc:"磁盘  *[0-9]""') do (
  9.      for /f "tokens=3" %%i in ('"(echo sel disk %%a & echo detail disk & echo list part)|diskpart|findstr /irc:"类型  *:""') do (
  10.           if defined _%%i echo.&echo.&echo Disk%%a Type:        !_%%i!         %%b %%c
  11.      )
  12. )

  13. pause >nul
  14. 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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2024-10-24 15:56:17 | 显示全部楼层
本帖最后由 ygqiang 于 2024-10-29 15:51 编辑

参考下面的代码,可以显示常规容量,256G\500G

  1. @echo off
  2. setlocal enabledelayedexpansion

  3. COLOR 04
  4. COLOR 84

  5. COLOR f4
  6. COLOR fc
  7. COLOR 7c
  8. COLOR 74
  9. echo.
  10. echo.
  11. echo --------------硬盘信息如下:
  12. echo.
  13. set "StrDrive="
  14. for /f "tokens=1* delims==" %%a in ('"wmic DiskDrive where MediaType='Fixed hard disk media' get Model,Size /value | findstr ="') do (
  15.     if "%%a" == "Model" (
  16.         for /f  %%i in ("%%b") do (
  17.             set StrDrive=!StrDrive!,品牌:%%i
  18.         )
  19.     ) else if "%%a" == "Size" (
  20.         for /f "delims=" %%i in ("%%b") do (
  21.             set SizeGB=%%i
  22. set /a SizeGB=!SizeGB:~, -6!/1000
  23. set StrDrive=!StrDrive!,容量:!SizeGB!GB
  24. set "StrDrive=!StrDrive:~1!"
  25. echo,!StrDrive!
  26. set "StrDrive="

  27.         )
  28.     )
  29. )


  30. pause
复制代码
最新版本的Windows 11 专业版24h2,不内置wmic命令了?
发表于 2024-11-27 20:51:10 | 显示全部楼层
感谢楼主分享
还有win11 wmic貌似默认不启用 ,得自己手动启用才能用
发表于 2024-11-27 21:17:42 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-11-27 21:23 编辑

回复 2# ygqiang

若 wmic 真是彻底接棒给 powershell,批处就直接调用 powershell 功能了...

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "tokens=1-2 delims=: " %%a in (
  3.    'powershell "get-physicaldisk|select *"^|findstr /ib "deviceid bustype size" '
  4. ) do if /i "%%a"=="size" (
  5.    for /f %%v in ('powershell "[math]::round(%%b/1gb)" ') do echo,Disk!deviceid! !bustype! %%vGB
  6. ) else set "%%a=%%b"
  7. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-11-27 21:50:38 | 显示全部楼层
回复 4# aloha20200628


    谢谢 ,win10,win11 24h2系统,测试成功。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:03 , Processed in 0.010815 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表