当前位置 博文首页 > vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者

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

    作者:admin 时间:2021-02-16 06:37

    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"
    js