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

[转贴] VBS计算文件、文件夹大小

[复制链接]
发表于 2011-7-17 00:16:40 | 显示全部楼层 |阅读模式
  1. set open=createobject("scripting.filesystemobject")
  2. str=inputbox("请输入文件(夹)名称或文件(夹)完整路径:",wscript.scriptname)
  3. if open.fileexists(str) then
  4. f1=open.getfile(str).size
  5. if f1<=1024 then
  6. sum=f1/1024
  7. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  8. else
  9. if f1<=1024^2 then
  10. sum=f1/1024^2
  11. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  12. else
  13. sum=f1/1024^2
  14. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  15. end if
  16. end if
  17. else
  18. f2=open.getfolder(str).size
  19. if f2<=1024 then
  20. sum=f2/1024
  21. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  22. else
  23. if f2<=1024^2 then
  24. sum=f2/1024^2
  25. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  26. else
  27. sum=f2/1024^2
  28. t=split(sum,".")(0)&"."&left(split(sum,".")(1),2)
  29. end if
  30. end if
  31. end if
  32. msgbox round(t,2)&" MB",64,wscript.scriptname
复制代码

评分

参与人数 1PB +5 收起 理由
batman + 5 感谢分享

查看全部评分

发表于 2011-7-17 10:22:34 | 显示全部楼层

  1. function HumanSize(size)
  2.     Dim Units, Gates, SizeStr
  3.     Units = Array("Byte", "KB", "MB", "GB", "TB")
  4.     Gates = Array(1, 1024, 1024^2, 1024^3, 1024^4)

  5.     SizeStr = "0Byte"
  6.     for i=UBound(Units) to 0 Step -1
  7.         if size>=Gates(i) then
  8.             SizeStr = FormatNumber(Size/Gates(i), 2) & Units(i)
  9.             exit for
  10.         end if
  11.     next
  12. HumanSize = SizeStr
  13. end function

  14. 'example
  15. set fso = CreateObject("Scripting.FileSystemObject")
  16. Size = fso.GetFolder(".").Size
  17. WScript.Echo Size & " = " & HumanSize(Size)
复制代码

评分

参与人数 1PB +2 技术 +1 收起 理由
batman + 2 + 1 乐于助人

查看全部评分

发表于 2011-7-17 12:29:19 | 显示全部楼层
本帖最后由 Demon 于 2011-7-18 12:07 编辑

  1. Function format_size(size)
  2.     On Error Resume Next 'For Log(0)
  3.     sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB")
  4.     i = Int(Log(size) / Log(1024))
  5.     format_size = Round(size / 1024 ^ i, 2) & sizes(i)
  6. End Function

  7. 'Example
  8. Set fso = CreateObject("Scripting.FileSystemObject")
  9. size = fso.GetFolder(".").Size
  10. WScript.Echo format_size(size)
复制代码

评分

参与人数 1PB +2 技术 +1 收起 理由
batman + 2 + 1 乐于助人

查看全部评分

发表于 2011-7-17 13:44:06 | 显示全部楼层
VBS的函数真不省心,默认会省略纯小数(整数部分为0的小数)小数点前面的0,这虽然是合法的小数表示法,但不符合人的习惯。Round函数没有选项改变这种行为,FormatNumber函数可以指定。但FormatNumber不爽的是对纯整数也要添加指定个数的小数位,没有选项可以设置不要添加。

FormatNumber(Size/Gates(i), 2, -1, , 0)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 01:10 , Processed in 0.019266 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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