vbs 列出該目錄下所有文件和文件夾的類型,大小,和所有者
2020-07-26 11:53:57
供稿:網友
 
						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"