vbs 列出某个文件夹下所有文件和文件夹的类型,大小,和所有者

 http://www.hackbase.com/subject/2009-09-23/16470.html

 

这是我在菊花论坛脚本版块看到的,真的很不错,一共有四个部份,把代码复制到记事本另存为GetOwner.VBS文件,

  GetOwner.VBS用法,在命令行下:GetOwner.vbs 目录名会在相应目录下生成一个TXT.TXT文件,内里列出该目录下所有文件和文件夹的类型,大小,和所有者

  注意:大小以MB为单位,小于1MB的就显示为0MB,

  以下是代码:

  G = WScript.arguments(0)

  Set oFSO = CreateObject("Scripting.FileSystemObject")

  set txt = oFSO.CreateTextFile(G&"TXT.txt",true) '嘿嘿,如果这个目录下刚好有一个TXT.txt文件,那就算你倒霉,

  不会有人真用这种名字来做文件名吧?真的啊,真的有啊?那你

  换地方吧~~~C: \TXT.TXT应该不会有了吧?

  set objWMI = GetObject("winmgmts:")

  Set oFiles = objWMI.ExecQuery("ASSOCIATORS OF {Win32_Directory.Name='"&G&"'}" & "where ResultClass =

  CIM_logicalfile")

  For Each oFile In oFiles

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( oFile.name)

  txt.WriteLine( "Type: " & oFile.FileType)

  if oFile.name = G&"system volume information" then

  exit for

  end if

  if oFile.FileType="File Folder" then

  Set objFolder = oFSO.GetFolder(oFile.name)

  txt.WriteLine("Size: " & Cint(objFolder.Size/1024/1024) &"MB")

  else

  txt.WriteLine( "Size: " & cint(oFile.FileSize/1024/1024) &"MB")

  end if

  strFile = oFile.name

  strComputer = "."

  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer &

  "\root\cimv2")

  Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile

  & "'}" & " WHERE

  AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

  For Each objItem in colItems

  if oFile.name = "system volume information" then

  exit for

  end if

  txt.WriteLine( "FileOwner: " & objItem.AccountName)

  Next

  Next

  统计某用户在某目录下的文件和文件夹使用方法:

  脚本名 目录名 用户名

  如:

  owner.vbs d:\ lsj

  结果是在相应目录下生成一个文本文件

  格式如下:

  --------------------------------------------------------------

  d:\jcb-gx

  Type: File Folder

  Size: 22MB

  --------------------------------------------------------------

  d:\powerword 2003.rar

  Type: WinRAR 档案文件

  Size: 503MB

  --------------------------------------------------------------

  d:\txt.txt

  Type: Text Document

  Size: 0MB

  --------------------------------------------------------------

  d:\年 度 考 核 登 记 表2006版061225.doc

  Type: Microsoft Word 文档

  Size: 0MB

  --------------------------------------------------------------

  --------------------------------------------------------------

  --------------------------------------------------------------

  The TotalSize of All files lsj owns is: 525MB

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  以下为脚本代码:

  TotalSize = 0

  G = WScript.arguments(0)

  H = WScript.arguments(1)

  Set oFSO = CreateObject("Scripting.FileSystemObject")

  set txt = oFSO.CreateTextFile(G&"TXT.txt",true)

  set objWMI = GetObject("winmgmts:")

  Set oFiles = objWMI.ExecQuery("ASSOCIATORS OF {Win32_Directory.Name='"&G&"'}" & "where ResultClass =

  CIM_logicalfile")

  For Each oFile In oFiles

  strFile = oFile.name

  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")

  Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile

  & "'}" & " WHERE

  AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

  For Each objItem in colItems

  if objItem.AccountName = H then

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( oFile.name)

  txt.WriteLine( "Type: " & oFile.FileType)

  if oFile.name = G&"system volume information" then

  exit for

  end if

  S = 0

  if oFile.FileType="File Folder" then

  Set objFolder = oFSO.GetFolder(oFile.name)

  S= Cint(objFolder.Size/1024/1024)

  else

  S= Cint(oFile.FileSize/1024/1024)

  end if

  txt.WriteLine( "Size: " & S &"MB")

  TotalSize = TotalSize + S

  end if

  Next

  Next

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "The TotalSize of All files "&H&" owns is: " & TotalSize &"MB")

  更新后:

  4.0版

  使用方法:

  脚本名 目录名

  脚本会在相应目录下生成几个与本机用户对应的TXT文件,每个文件列出相应用户所有文件和文件夹的类型大小,并在最

  后合总计算所有文件和文件夹的大小

  以下是代码:

  TotalSize = 0

  G = WScript.arguments(0)

  Set oFSO = CreateObject("Scripting.FileSystemObject")

  Set objWMI = GetObject("winmgmts:")

  Set oFiles = objWMI.ExecQuery("ASSOCIATORS OF {Win32_Directory.Name='"&G&"'}" & "where ResultClass =

  CIM_logicalfile")

  Set objNetwork = CreateObject("Wscript.Network")

  strComputer = objNetwork.ComputerName

  Set colAccounts = GetObject("WinNT://" & strComputer & "")

  colAccounts.Filter = Array("user")

  For Each objUser In colAccounts

  H = objUser.Name

  A = G & objUser.Name & "txt.txt"

  Set txt = oFSO.CreateTextFile (A,true)

  For Each oFile In oFiles

  strFile = oFile.name

  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")

  Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile

  & "'}" & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

  For Each objItem in colItems

  if objItem.AccountName = H then

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( oFile.name)

  txt.WriteLine( "Type: " & oFile.FileType)

  if oFile.name = G&"system volume information" then

  exit for

  end if

  S = 0

  if oFile.FileType="File Folder" then

  Set objFolder = oFSO.GetFolder(oFile.name)

  S= Cint(objFolder.Size/1024/1024)

  else

  S= Cint(oFile.FileSize/1024/1024)

  end if

  txt.WriteLine( "Size: " & S &"MB")

  TotalSize = TotalSize + S

  end if

  Next

  Next

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "--------------------------------------------------------------")

  txt.WriteLine( "The TotalSize of All files "&H&" owns is: " & TotalSize &"MB")

  Next

  再次更新后:

  4.1版

  用法同前

  脚本名 目录名

  在目录名下生成一个文件,按用户次序输出所有用户在该目录中的文件信息,格式如下:

  --------------------------------------------------------------

  The TotalSize of All files Administrator owns is: 0MB

  --------------------------------------------------------------

  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  --------------------------------------------------------------

  The TotalSize of All files Guest owns is: 0MB

  --------------------------------------------------------------

  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  --------------------------------------------------------------

  The TotalSize of All files HelpAssistant owns is: 0MB

  --------------------------------------------------------------

  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  --------------------------------------------------------------

  d:\powerword 2003.rar

  Type: WinRAR 档案文件

  Size: 503MB

  --------------------------------------------------------------

  d:\年 度 考 核 登 记 表2006版061225.doc

  Type: Microsoft Word 文档

  Size: 0MB

  --------------------------------------------------------------

  d:\jcb-gx

  Type: File Folder

  Size: 22MB

  --------------------------------------------------------------

  The TotalSize of All files lsj owns is: 525MB

  --------------------------------------------------------------

  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  --------------------------------------------------------------

  The TotalSize of All files SUPPORT_388945a0 owns is: 0MB

  --------------------------------------------------------------

  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  以下是代码:

  G = WScript.arguments(0)

  Set oFSO = CreateObject("Scripting.FileSystemObject")

  Set objWMI = GetObject("winmgmts:")

  Set oFiles = objWMI.ExecQuery("ASSOCIATORS OF {Win32_Directory.Name='"&G&"'}" & "where ResultClass =

  CIM_logicalfile")

  Set objNetwork = CreateObject("Wscript.Network")

  strComputer = objNetwork.ComputerName

  Set colAccounts = GetObject("WinNT://" & strComputer & "")

  colAccounts.Filter = Array("user")

  For Each objUser In colAccounts

  TotalSize = 0

  H = objUser.Name

  Set TXT = oFSO.OpenTextFile(G&"\TXT.TXT",8,true)

  For Each oFile In oFiles

  strFile = oFile.name

  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")

  Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile

  & "'}" & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

  For Each objItem in colItems

  if objItem.AccountName = H then

  TXT.WriteLine( "--------------------------------------------------------------")

  TXT.WriteLine( oFile.name)

  TXT.WriteLine( "Type: " & oFile.FileType)

  if oFile.name = G&"system volume information" then

  exit for

  end if

  S = 0

  if oFile.FileType="File Folder" then

  Set objFolder = oFSO.GetFolder(oFile.name)

  S= Cint(objFolder.Size/1024/1024)

  else

  S= Cint(oFile.FileSize/1024/1024)

  end if

  TXT.WriteLine( "Size: " & S &"MB")

  TotalSize = TotalSize + S

  end if

  Next

  Next

  TXT.WriteLine( "--------------------------------------------------------------")

  TXT.WriteLine( "The TotalSize of All files "&H&" owns is: " & TotalSize &"MB")

  TXT.WriteLine( "--------------------------------------------------------------")

  TXT.WriteLine( "※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※")

  TXT.Close

  Next

  MsgBox "文件列表信息已成功输出至TXT.TXT文件",64,"OK"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值