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

[数值计算] [模块分享]批处理功能:把字节转换成MB或者GB形式

[模块分享] 功能:把字节转换成MB或者GB形式

很多命令获得的文件或分区\硬盘大小以Byte表示
看起来诸多不便,故此转换成MB或者GB形式:

  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. ::==============================================================
  4. call:Getsize "104864059392"
  5. echo %Getsize%
  6. ::==============================================================
  7. :end
  8. ENDLOCAL&echo 按任意键退出&pause>nul
  9. ::=======================MODE CODE==============================
  10. :Getsize
  11. ::批处理能处理的最大数为[2,147,483,647]即4Byte31Bit,第32位表示正负符号
  12. ::1MB=1024KB=1,048,576 Byte
  13. ::1GB=1048576*1024=1,073,741,824 Byte 1073741824*2=2147483648
  14. ::Integer 整数;Decimal 小数
  15. set "Size_Num=%~1"
  16. set "dd="
  17. set /a dd=%Size_Num% "-" 2147483647
  18. if %errorlevel%==9168 (
  19. set /a GetSize=!Size_Num:~-9! "/" 1024 "/" 1024 "*" 100 "/" 1024
  20. set /a GetSize=!Size_Num:~0,-9!000000 "/" 1024 "*" 1000 "/" 1024 "*" 100 "/" 1024 "+" !GetSize!
  21. set "GetSize=!GetSize:~0,-2!.!GetSize:~-2! GB"
  22. goto:eof
  23. )
  24. if not "%dd%"=="" (
  25. echo %dd%
  26.    if %dd% GTR 0 (
  27.    set /a GetSize=%dd% "/" 1024 "/" 1024 "*" 100 "/" 1024
  28.    set /a GetSize=200 "+" !GetSize!
  29.    set "GetSize=!GetSize:~0,-2!.!GetSize:~-2! GB"
  30.    goto:eof)
  31.    if %Size_Num% GEQ 1073741824 (
  32.    set /a GetSize=%Size_Num% "/" 1024 "/" 1024 "*" 100 "/" 1024
  33.    set "GetSize=!GetSize:~0,-2!.!GetSize:~-2! GB"
  34.    ) else (
  35.    set /a GetSize=%Size_Num% "/" 1024 "*" 100 "/" 1024
  36.    set "GetSize=!GetSize:~0,-2!.!GetSize:~-2! MB"
  37.    )
  38. )
  39. goto:eof
  40. ::=======================END CODE===============================
复制代码

关键是硬件大都是1000MB=1GB,而且标签虽然是1G,实际容量没那么大。FUCK

[ 本帖最后由 sgaizxt001 于 2010-4-11 06:45 编辑 ]

TOP

返回列表