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

   2015-11-06 0
核心提示:这是我在菊花论坛脚本版块看到的,真的很不错,一共有四个部份,把代码复制到记事本另存为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 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • VB用API实现各种对话框(总结) vbs简单代码对话
    VB用API实现各种对话框(总结)  各种对话框(总结)标准对话框(SmDialog)Option Explicit''定义一个全局变量,用于保存字体的各种属性Public Type SmFontAttrFontName As String '字体名FontSize As Integer '字体大小FontBod As Boolean '是否黑体FontItalic A
    02-09
  • 脚本语言语言脚本语言:Shell , JavaScript、VBS
    今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下.     脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua                  工作控制语言和shell    Shell 脚本    此类脚本用于自动
    02-09
  • VB中的Dictionary对象 vbs dictionary
     VB中的Dictionary对象     Dictionary对象不是VBA或Visual Basic实时语言的具体存在的部分,它是存在于Microsoft Scripting Runtime Library(SCRRUN.DLL)中的一个对象。    为了在应用程序中使用Dictionary对象,就必须利用Reference对话框增加一个
    02-09
  • VB6文本框中日文乱码的解决办法 vbs写入中文后乱码
    VB6文本框中日文乱码的解决办法 vbs写入中文后
    TextBox控件的Font设置为MS Goshic 太字 并且下面的文字Set设置为 日本语。 
    02-09
  • vb常用函数一览表 vbs函数大全
    常用内部函数数学函数函数功能示例结果说明Abs(x)绝对值Abs(-50.3)50.3 Exp(x)自然指数Exp(2)e^2e(自然对数的底)的某次方Fix(x)取整(取参数的整数部分)Fix(-99.8)-99参数大于 0 时,去掉小数部分;参数小于 0 时,返回大于或等于该参数值Int(x)取整(取小于
    02-08
  • VBA/VB6/VBS/VB.NET/C#/Python/PowerShell都能调用的API封装库
    VBA/VB6/VBS/VB.NET/C#/Python/PowerShell都能
     API函数很强大,但是声明的时候比较繁琐。我开发的封装库,包括窗口、键盘、鼠标、消息等常用功能。用户不需要添加API函数的声明,就可以用到API的功能。在VBA、VB6的引用对话框中引用API.tlb文件,就可以用到其中的函数和方法,在VB.Net或C#项目中引用API.
    02-08
  • 如何在VB.net中建立word文档 vbs创建文本文档
    Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.ClickEnd Subwith:Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.ClickDim oWord As
    02-08
  • VB中的+与&符号的区别 vb和vbs
    字符串运算符和字符串表达式  字符串运算符的作用是将两个字符串连接成一个字符串,经常形象的叫做连接符。  在VB中就提供了两种连接用的字符串运算符 “”、“+” 例如  “VB”+“编程入门” 就等同于“VB编程入门” “VB”“编程入门” 就等同于“V
    02-07
  • 使用 Iisext.vbs 列出Web服务扩展的方法
    这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上列出 Web 服务扩展,需要的朋友可以参考下
  • 使用 Iisext.vbs 启用Web服务扩展文件的方法
    这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上启用 Web 服务扩展文件,需要的朋友可以参考下
点击排行