上次讲到folder对象,现在来讲folderitem对象
set shellapp=createobject("shell.application")
set folder=shellapp.namespace("c://windows")
folderitem对象可以是文件夹,也可以是文件
以下是获取folderitem对象的几种办法
1.
set items=folder.items
for each item in items
'item就是folderitem对象
next
2.
set item=folder.parsename("system32")
3.
set item=folder.self'item就是folder
以下是folderitem对象的方法和属性
1.application属性(只读)
官方解释:
属性返回包含 WebBrowser 控件的应用程序支持的自动化对象(如果该对象可访问)。否则,此属性将返回 Web 浏览器控件的自动化对象。
将此属性与 Set 和 CreateObject 命令或 GetObject 命令一起使用,以创建和操作 Windows Internet Explorer 应用程序的实例。
搞不明白[苦恼]
2.GetFolder属性(只读)
返回一个自己的folder对象,和folder的self刚好相反
3.getlink属性(只读)
如果这是一个lnk快捷方式文件,那就返回一个shelllinkobject对象
关于shelllinkobject,之后会介绍
4.IsBrowsable属性(只读)
指示该项是否可以在浏览器或 Windows 资源管理器框架内承载。
返回值是一个布尔值,如果可以浏览项目,则接收 true,如果不能浏览,则接收 false。
有啥用我不知道
5.IsFileSystem属性(只读)
指示该项是否为文件系统的一部分。
一个布尔值,如果项目是文件系统的一部分,则接收 true;如果不是,则接收 false。
意思是这个文件夹存在与否?
6.IsFolder属性(只读)
这个很好理解
7.IsLink属性(只读)
可以用来在getlink前判断一下,毕竟不是所有的lnk文件都是快捷方式
8.ModifyDate(对于文件,可以读写;对于文件夹,只读)
获取或者设置最后修改日期,其实没啥用
9.Name属性(读写)
很有意思啊,一个folder对象的name是只读的,但是变成folderitem就是读写的了
文件的name应该是完整的,比如
'这是官方示例
set FolderItem = Folder.ParseName("AUTOEXEC.BAT")
szReturn = FolderItem.Name
FolderItem.Name = "TEST.BAT"
10.parent属性(只读)
返回它的父文件夹,是folder对象!!!注意
相当于parsename的反函数
11.path属性(只读)
相当于fso里的path属性,完整路径
12.size属性(只读)
返回文件大小
13.type属性(制度)
相当于文件的“属性”一栏里的“文件类型”
14.verbs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!这里非常牛逼!!!!!!!!!!!!!!!!!!!
verbs可以获取文件右键的方法栏里的打开方法
如此
set objShell = CreateObject("shell.application")
ssfWINDOWS = 36
set objFolder2 = objShell.NameSpace(ssfWINDOWS).parsename("regedit.exe")
set verbs=objfolder2.verbs
for each verb in verbs
wscript.echo verb
next
于是输出了:
打开(&O)
以管理员身份运行(&A)
使用 Skype 共享
上传到迅雷云盘
固定到“开始”屏幕(&P)
添加到压缩文件(&A)...
添加到 "regedit.zip" (&T)
用360压缩打开(&Q)
解压到(&F)...
解压到当前文件夹(&X)
解压到 regedit\ (&E)
共享
上传到百度网盘
同步至其它设备
还原以前的版本(&V)
剪切(&T)
复制(&C)
创建快捷方式(&S)
删除(&D)
重命名(&M)
属性(&R)
欸,比如我还可以用360压缩它
verb也可以自己执行谓词
set objVerbs = Folder.Self.Verbs
objVerbs.Item(0).DoIt
'即执行第一项
建议这么用,不然可能因为中英文转换造成一些莫名其妙的问题
15.invokeverb函数
如此可以调用我们用verbs获取的右键方法
FolderItem.InvokeVerb(verb)
'verb是一个缺省属性,如果填写就执行指定动作。如果不填或者填了一个没有的,就运行默认方法,一般来说是“open”
folderitems对象:
folderitems对象可以通过folder的items函数返回
1.application属性
照样不知道是干啥的
2._NewEnum函数
“Creates and returns a new FolderItems object that is a copy of this FolderItemsss object.”
创建并返回一个副本?搞不懂
3.count属性(只读)
返回集合的上标
也就是这个文件夹里有多少个文件
4.item函数
通过一个索引来获取指定的folderitem对象
5.invokeverbEx函数
类似于folderitem的invokeverb
其实所有的shellapp操作你都能用鼠标在电脑界面上做到
比如这个方法,大概相当于你刷黑桌面上的一些文件然后按enter键
可以一次性打开一堆文件
6.filter函数
又是一个非常牛逼的东西!!!!!
语法:
FolderItems.Filter grfFlags,bstrFilter
先说bstrfilter。是一个可以包括通配符的字符串
比如"*.txt"就是选则左右txt文件
再说grfflags
//这是c++代码
typedef enum _SHCONTF {
SHCONTF_CHECKING_FOR_CHILDREN = 0x10,
SHCONTF_FOLDERS = 0x20,
SHCONTF_NONFOLDERS = 0x40,
SHCONTF_INCLUDEHIDDEN = 0x80,
SHCONTF_INIT_ON_FIRST_NEXT = 0x100,
SHCONTF_NETPRINTERSRCH = 0x200,
SHCONTF_SHAREABLE = 0x400,
SHCONTF_STORAGE = 0x800,
SHCONTF_NAVIGATION_ENUM = 0x1000,
SHCONTF_FASTITEMS = 0x2000,
SHCONTF_FLATLIST = 0x4000,
SHCONTF_ENABLE_ASYNC = 0x8000,
SHCONTF_INCLUDESUPERHIDDEN = 0x10000
} ;
以下是每个的含义
注意:vbs没有定义诸如SHCONTF_INCLUDESUPERHIDDEN的值,要用时应当直接输入如64,128
SHCONTF_CHECKING_FOR_CHILDREN
值:0x10
0x00010。Windows 7 及更高版本。调用应用程序正在检查文件夹中是否存在子项。
SHCONTF_FOLDERS
值:
0x20 0x00020。在枚举中包括作为文件夹的项。
SHCONTF_NONFOLDERS
值:
0x40 0x00040。在枚举中包含不是文件夹的项。
SHCONTF_INCLUDEHIDDEN
值:0x80
0x00080。在枚举中包含隐藏项。这不包括隐藏的系统项目。(若要包含隐藏的系统项,请使用SHCONTF_INCLUDESUPERHIDDEN。
SHCONTF_INIT_ON_FIRST_NEXT
值:0x100
0x00100。不再使用;总是假设。IShellFolder::EnumObjects 可以在不验证枚举对象的情况下返回。验证可以推迟到第一次调用 IEnumIDList::Next。当用户界面可能在第一次 IEnumIDList::下一个调用之前显示时,请使用此标志。要显示用户界面,必须将 hwnd 设置为有效的窗口句柄。
SHCONTF_NETPRINTERSRCH
值:0x200
0x00200。调用应用程序正在查找打印机对象。
SHCONTF_SHAREABLE
值:0x400
0x00400。调用应用程序正在寻找可以共享的资源。
SHCONTF_STORAGE
值:
0x800 0x00800。包括具有可访问存储的项目及其祖先,包括隐藏项目。
SHCONTF_NAVIGATION_ENUM
值:0x1000
0x01000。Windows 7 及更高版本。子文件夹应提供导航枚举。
SHCONTF_FASTITEMS
值:0x2000
0x02000。Windows Vista 及更高版本。调用应用程序正在寻找可以快速枚举的资源。
SHCONTF_FLATLIST
值:
0x4000 0x04000。Windows Vista 及更高版本。将项目枚举为简单列表,即使文件夹本身不是以这种方式构建的。
SHCONTF_ENABLE_ASYNC
值:0x8000
0x08000。Windows Vista 及更高版本。调用应用程序正在监视更改通知。这意味着枚举器不必返回所有结果。可以通过更改通知报告项目。
SHCONTF_INCLUDESUPERHIDDEN
值:0x10000
0x10000。Windows 7 及更高版本。在枚举中包含隐藏的系统项。此值不包括隐藏的非系统项。(若要包含隐藏的非系统项,请使用SHCONTF_INCLUDEHIDDEN。
写个例子:
set folder=shellapp.namespace("c:\windows\system32")
set folderitems=folder.items
folderitems.filter 65536,"*.exe"
folderitems.InvokeVerbEx
最后吐槽一句,vb6一系的面向对象编程实在是太垃圾了
人家的集合既可以直接遍历,也有自己的属性方法
剩下的都是一些杂七杂八的东西,晚上写
set shellapp=createobject("shell.application")
set folder=shellapp.namespace("c://windows")
folderitem对象可以是文件夹,也可以是文件
以下是获取folderitem对象的几种办法
1.
set items=folder.items
for each item in items
'item就是folderitem对象
next
2.
set item=folder.parsename("system32")
3.
set item=folder.self'item就是folder
以下是folderitem对象的方法和属性
1.application属性(只读)
官方解释:
属性返回包含 WebBrowser 控件的应用程序支持的自动化对象(如果该对象可访问)。否则,此属性将返回 Web 浏览器控件的自动化对象。
将此属性与 Set 和 CreateObject 命令或 GetObject 命令一起使用,以创建和操作 Windows Internet Explorer 应用程序的实例。
搞不明白[苦恼]
2.GetFolder属性(只读)
返回一个自己的folder对象,和folder的self刚好相反
3.getlink属性(只读)
如果这是一个lnk快捷方式文件,那就返回一个shelllinkobject对象
关于shelllinkobject,之后会介绍
4.IsBrowsable属性(只读)
指示该项是否可以在浏览器或 Windows 资源管理器框架内承载。
返回值是一个布尔值,如果可以浏览项目,则接收 true,如果不能浏览,则接收 false。
有啥用我不知道
5.IsFileSystem属性(只读)
指示该项是否为文件系统的一部分。
一个布尔值,如果项目是文件系统的一部分,则接收 true;如果不是,则接收 false。
意思是这个文件夹存在与否?
6.IsFolder属性(只读)
这个很好理解
7.IsLink属性(只读)
可以用来在getlink前判断一下,毕竟不是所有的lnk文件都是快捷方式
8.ModifyDate(对于文件,可以读写;对于文件夹,只读)
获取或者设置最后修改日期,其实没啥用
9.Name属性(读写)
很有意思啊,一个folder对象的name是只读的,但是变成folderitem就是读写的了
文件的name应该是完整的,比如
'这是官方示例
set FolderItem = Folder.ParseName("AUTOEXEC.BAT")
szReturn = FolderItem.Name
FolderItem.Name = "TEST.BAT"
10.parent属性(只读)
返回它的父文件夹,是folder对象!!!注意
相当于parsename的反函数
11.path属性(只读)
相当于fso里的path属性,完整路径
12.size属性(只读)
返回文件大小
13.type属性(制度)
相当于文件的“属性”一栏里的“文件类型”
14.verbs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!这里非常牛逼!!!!!!!!!!!!!!!!!!!
verbs可以获取文件右键的方法栏里的打开方法
如此
set objShell = CreateObject("shell.application")
ssfWINDOWS = 36
set objFolder2 = objShell.NameSpace(ssfWINDOWS).parsename("regedit.exe")
set verbs=objfolder2.verbs
for each verb in verbs
wscript.echo verb
next
于是输出了:
打开(&O)
以管理员身份运行(&A)
使用 Skype 共享
上传到迅雷云盘
固定到“开始”屏幕(&P)
添加到压缩文件(&A)...
添加到 "regedit.zip" (&T)
用360压缩打开(&Q)
解压到(&F)...
解压到当前文件夹(&X)
解压到 regedit\ (&E)
共享
上传到百度网盘
同步至其它设备
还原以前的版本(&V)
剪切(&T)
复制(&C)
创建快捷方式(&S)
删除(&D)
重命名(&M)
属性(&R)
欸,比如我还可以用360压缩它
verb也可以自己执行谓词
set objVerbs = Folder.Self.Verbs
objVerbs.Item(0).DoIt
'即执行第一项
建议这么用,不然可能因为中英文转换造成一些莫名其妙的问题
15.invokeverb函数
如此可以调用我们用verbs获取的右键方法
FolderItem.InvokeVerb(verb)
'verb是一个缺省属性,如果填写就执行指定动作。如果不填或者填了一个没有的,就运行默认方法,一般来说是“open”
folderitems对象:
folderitems对象可以通过folder的items函数返回
1.application属性
照样不知道是干啥的
2._NewEnum函数
“Creates and returns a new FolderItems object that is a copy of this FolderItemsss object.”
创建并返回一个副本?搞不懂
3.count属性(只读)
返回集合的上标
也就是这个文件夹里有多少个文件
4.item函数
通过一个索引来获取指定的folderitem对象
5.invokeverbEx函数
类似于folderitem的invokeverb
其实所有的shellapp操作你都能用鼠标在电脑界面上做到
比如这个方法,大概相当于你刷黑桌面上的一些文件然后按enter键
可以一次性打开一堆文件
6.filter函数
又是一个非常牛逼的东西!!!!!
语法:
FolderItems.Filter grfFlags,bstrFilter
先说bstrfilter。是一个可以包括通配符的字符串
比如"*.txt"就是选则左右txt文件
再说grfflags
//这是c++代码
typedef enum _SHCONTF {
SHCONTF_CHECKING_FOR_CHILDREN = 0x10,
SHCONTF_FOLDERS = 0x20,
SHCONTF_NONFOLDERS = 0x40,
SHCONTF_INCLUDEHIDDEN = 0x80,
SHCONTF_INIT_ON_FIRST_NEXT = 0x100,
SHCONTF_NETPRINTERSRCH = 0x200,
SHCONTF_SHAREABLE = 0x400,
SHCONTF_STORAGE = 0x800,
SHCONTF_NAVIGATION_ENUM = 0x1000,
SHCONTF_FASTITEMS = 0x2000,
SHCONTF_FLATLIST = 0x4000,
SHCONTF_ENABLE_ASYNC = 0x8000,
SHCONTF_INCLUDESUPERHIDDEN = 0x10000
} ;
以下是每个的含义
注意:vbs没有定义诸如SHCONTF_INCLUDESUPERHIDDEN的值,要用时应当直接输入如64,128
SHCONTF_CHECKING_FOR_CHILDREN
值:0x10
0x00010。Windows 7 及更高版本。调用应用程序正在检查文件夹中是否存在子项。
SHCONTF_FOLDERS
值:
0x20 0x00020。在枚举中包括作为文件夹的项。
SHCONTF_NONFOLDERS
值:
0x40 0x00040。在枚举中包含不是文件夹的项。
SHCONTF_INCLUDEHIDDEN
值:0x80
0x00080。在枚举中包含隐藏项。这不包括隐藏的系统项目。(若要包含隐藏的系统项,请使用SHCONTF_INCLUDESUPERHIDDEN。
SHCONTF_INIT_ON_FIRST_NEXT
值:0x100
0x00100。不再使用;总是假设。IShellFolder::EnumObjects 可以在不验证枚举对象的情况下返回。验证可以推迟到第一次调用 IEnumIDList::Next。当用户界面可能在第一次 IEnumIDList::下一个调用之前显示时,请使用此标志。要显示用户界面,必须将 hwnd 设置为有效的窗口句柄。
SHCONTF_NETPRINTERSRCH
值:0x200
0x00200。调用应用程序正在查找打印机对象。
SHCONTF_SHAREABLE
值:0x400
0x00400。调用应用程序正在寻找可以共享的资源。
SHCONTF_STORAGE
值:
0x800 0x00800。包括具有可访问存储的项目及其祖先,包括隐藏项目。
SHCONTF_NAVIGATION_ENUM
值:0x1000
0x01000。Windows 7 及更高版本。子文件夹应提供导航枚举。
SHCONTF_FASTITEMS
值:0x2000
0x02000。Windows Vista 及更高版本。调用应用程序正在寻找可以快速枚举的资源。
SHCONTF_FLATLIST
值:
0x4000 0x04000。Windows Vista 及更高版本。将项目枚举为简单列表,即使文件夹本身不是以这种方式构建的。
SHCONTF_ENABLE_ASYNC
值:0x8000
0x08000。Windows Vista 及更高版本。调用应用程序正在监视更改通知。这意味着枚举器不必返回所有结果。可以通过更改通知报告项目。
SHCONTF_INCLUDESUPERHIDDEN
值:0x10000
0x10000。Windows 7 及更高版本。在枚举中包含隐藏的系统项。此值不包括隐藏的非系统项。(若要包含隐藏的非系统项,请使用SHCONTF_INCLUDEHIDDEN。
写个例子:
set folder=shellapp.namespace("c:\windows\system32")
set folderitems=folder.items
folderitems.filter 65536,"*.exe"
folderitems.InvokeVerbEx
最后吐槽一句,vb6一系的面向对象编程实在是太垃圾了
人家的集合既可以直接遍历,也有自己的属性方法
剩下的都是一些杂七杂八的东西,晚上写