首页 电脑 电脑学堂 查看内容

vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者

2009-9-23 17:51 734 0

摘要:   这是我在菊花论坛脚本版块看到的,真的很不错,一共有四个部份,把代码复制到记事本另存为GetOwner.VBS文件,   GetOwner.VBS用法,在命令行下:GetOwner.vbs 目录名...

  这是我在菊花论坛脚本版块看到的,真的很不错,一共有四个部份,把代码复制到记事本另存为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"
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部