[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [已解决]批处理如何以以MB和GB为单位转换内存和硬盘的容量大小?

本帖最后由 pcl_test 于 2016-7-17 20:11 编辑

請教批處理前輩及大哥們

小弟想求得實體內存計算成(MB)以及磁碟大小計算成(GB)
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims==" %%a in ('wmic path win32_physicalmemory get banklabel^,capacity /value 2^>nul') do (
  4. if /i "%%a"=="banklabel" set "banklabel=%%b"
  5. if /i "%%a"=="capacity" set /a "capacity=%%b/1024/1024" & echo.實體內存 = !capacity! MB !banklabel:~,-1!
  6. )
  7. for /f "tokens=1* delims==" %%a in ('wmic path win32_diskdrive get caption^,interfacetype^,size /value 2^>nul') do (
  8. if /i "%%a"=="caption" set "caption=%%b"
  9. if /i "%%a"=="size" set /a "size=%%b/1024/1024" & ECHO.磁碟名稱 = !Caption:~,-1!  Size: !Disk! GB
  10. )
  11. pause >nul
复制代码
希望代碼能適用於XP及WIN7的環境,懇請不吝指教!!
1

评分人数

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

終於發現原來是被除數過大的限制!
已經解決問題了!!

TOP

bat+vbs
  1. '&cls&cscript -nologo -e:vbscript "%~fs0"&pause&exit
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set wmi = GetObject("winmgmts:\\.\root\cimv2")
  4. WSH.echo GetMemory()&GetHardDisk()
  5. '内存容量
  6. Function GetMemory()
  7.     Dim i, s
  8.     Set Memory = wmi.execquery("select * from win32_physicalmemory")
  9.     For Each item In Memory
  10.         i = i+1
  11.         s = s &"内存"& i &"[容量:"& GetSize(item.Capacity) &"]"& vbCrLf
  12.     Next  
  13.     GetMemory = s
  14. End Function
  15. '硬盘容量
  16. Function GetHardDisk()
  17.     Dim i, s
  18.     Set HardDisk = wmi.execquery("select * from win32_diskdrive")
  19.     For Each item In HardDisk
  20.         i = i+1
  21.         s = s &"硬盘"& i &"[名称:"& item.Caption &",接口类型:"& item.InterfaceType &",容量:"&GetSize(item.Size) &"]"& vbCrLf
  22.     Next  
  23.     GetHardDisk = s
  24. End Function
  25. '转换单位
  26. Function GetSize(size)
  27.     If size >= 1125899906842624 Then
  28.         GetSize = FormatNumber(size/1125899906842624, 2, true) & "PB"
  29.     ElseIf size >= 1099511627776 Then
  30.         GetSize = FormatNumber(size/1099511627776, 2, true) & "TB"
  31.     ElseIf size >= 1073741824 Then
  32.         GetSize = FormatNumber(size/1073741824, 2, true) & "GB"
  33.     ElseIf size >= 1048576 Then
  34.         GetSize = FormatNumber(size/1048576, 2, true) & "MB"
  35.     ElseIf size >= 1024 Then
  36.         GetSize = FormatNumber(size/1024, 2, true) & "KB"
  37.     Else
  38.         GetSize = size & "字节"   
  39.     End If
  40. End Function
复制代码

TOP

返回列表