打印

[原创] 统计文件夹中子文件夹和文件的所有者

本主题由 mwpq 于 2008-1-7 11:06 关闭

7.2修正版

这个应该没有问题了
复制内容到剪贴板
代码:

'查看是否有参数,如果有参数,则统计参数所指的目录,如果没有参数,则提示用户输入
If WScript.arguments.count = 0 Then
G = InputBox("本程序将统计目录中文件和文件夹的所有者"&Chr(10)&Chr(10)&"请输入你要统计的盘符或目录: ","统计目录")
Else
G = WScript.arguments(0)
End If
'如果参数最后一位是:"?",则弹出窗口提供简单说明
If Right(G,1)="?" Then
MsgBox "本程序将统计目录中所有文件和文件夹的所有者"&Chr(10)&Chr(10)&"使用方法:"&Chr(10)&"命令行下: '脚本名 目录名' 或者直接双击执行",64,"使用说明"
Wscript.Quit
End If
'如果输入为空则退出
If G = "" Then
Wscript.Quit
End If
'检查输入的目录字符串是否在最后有"\",如果没有则加上
If InStrRev(G,"\")<LEN(G) Then
G = G & "\"
End If
Set oFSO = CreateObject("Scripting.FileSystemObject") '创建一个文件系统对象
'检查输入的目录是否存在
If Not (oFSO.FolderExists(G)) Then
MsgBox "输入的目录"&G&"不存在,程序终止",16,"错误"
Wscript.Quit
End If
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
objExcel.Visible = True
objExcel.DisplayAlerts = False
objExcel.cells(1,1).value = "Name"
objExcel.cells(1,2).value = "Type"
objExcel.cells(1,3).value = "Size(KB)"
objExcel.cells(1,4).value = "owner"
Set objRange = objExcel.Range("A1","D1")
objRange.Interior.ColorIndex = 36
i = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(G)
Set colFiles = objFolder.Files
For Each objFile in colFiles
objExcel.cells(i,1).value =objFile
objExcel.cells(i,2).value = objFile.Type
objExcel.cells(i,3).value = Clng(objFile.Size/1024)
ListOwner objFile.Path
Next
Set colSubFolders = objFolder.SubFolders
For Each SubFolder in colSubFolders
On Error Resume next
objExcel.cells(i,1).value =SubFolder.path
objExcel.cells(i,2).value = "Folder"
objExcel.cells(i,3).value = Clng(SubFolder.Size/1024)
ListOwner SubFolder.Path
Next
Sub ListOwner(strFile)
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFile & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
If intRetVal = 0 Then
objExcel.cells(i,4).value=objSD.Owner.Domain &"\"&objSD.Owner.Name
i = i + 1
Else
objExcel.cells(i,4).value = "Unkown user"
End If
End Sub

Set objRange = objExcel.Range("D1")
objRange.Sort objRange,,,,,,,1
Set objRange = objExcel.Range("A1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("B1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("C1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("D1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

set objbook = objExcel.activeWorkbook
objbook.saveas(G&"listowner.xls")
MsgBox "文件信息已成功输出至listowner.xls文件",64,"OK"
[ 本帖最后由 北羊 于 2007-12-20 20:28 编辑 ]
好久没来了,谁还记得我,加分加分~~~

TOP

不是很懂啊来学习下

TOP

这个可以了!!太感谢了!!

TOP