1 scripting类库 (scrrun.dll)
Scripting类库中有三个可以直接使用NEW关键字实例化的类,第一个就是常用的字典,第三个是FSO。
这个介绍的挺好
1.1scripting类库有多少东西?
- scripting.dictionary
- scripting.filesystemobject
- scripting.encoder
- scripting.Files
- scripting.\
1.2 scripting.filesystemobject
- 前期绑定:比较像oo语言。先要引用类库文件scrrun.dll,写代码的时候有智能提示。
- dim fso as new scripting.filesystemobject
- 后期绑定:不需要引用类库文件,但没有智能提示。 如果程序发给别人用,就要用后期绑定方式。
- dim fso as object
- set fso = createobject("scripting.filesystemobject")
'声明方式1
'后期绑定:不需要引用类库文件,但没有智能提示。
' 如果程序发给别人用,就要用后期绑定方式。
Dim dic2 As Object
Dim fso2 As Object
Dim enc2 As Object
Set dic2 = CreateObject("scripting.dictionary")
Set fso2 = CreateObject("scripting.filesystemobject")
Set enc2 = CreateObject("scripting.encoder")
'声明方式2,比较像oo语言
'前期绑定:先要引用类库文件scrrun.dll,写代码的时候有智能提示。
Dim dic1 As New scripting.dictionary
Dim fso1 As New scripting.filesystemobject
Dim enc1 As New scripting.encoder
'scripting类库有多少东西?
'scripting.dictionary
'scripting.filesystemobject
'scripting.encoder
'scripting.files
'scripting.
2 textsteam对象实用属性和方法
textsteam对象(fso 经常用的也是 textsteam 对象)
- createtextfile
- opentextfile
- 方法
- 读取:Read,ReadAll,ReadLine
- 写入:Write,WriteLine,WriteBlankLines
- 属性
- AtEndOfLine: 文件指针正好在行尾标记,则返回TRUE
- AtEndOfStream: 文件指针在文件末尾,则返回TRUE
- Line: 返回一个 TextStream 文件中的当前行号。
- Column: 返回 TextStream 文件中当前字符位置的列号。
3 fso 文件系统对象object----filesystemobject
fso是微软新增的功能,就是现在VBA里生成一个 文件对象
- fso=createobject("scripting.filesystemobject")
- dict=createobject("scripting.dictionary")
3.1 fso的子对象
- fso.drive
- fso.folder
- fso.file
- fso
- textsteam 主要是对文件进行读写io操作
3.2FSO的局限性
- 局限性1:不能直接筛多个文件,只能先筛文件夹
- 正确fso.getfile()
- 错误fso.getfiles()
- 间接实现 fso.getfolder() .files ,完美解决
- 局限性2:很方便查所有文件数,但是不方便查某一类型的文件个数
- fso.getfolder("").files.count
3.3 过程或函数末,记得释放对象变量,set fso=nothing
3.4 官方 msdn的doc能找到 很多 textsteam (如fso)的方法
https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/readline-method
3.5 fso.的很多方法测试 (部分不好用,部分未测试)
fso. 对象下有很多方法
Sub richardliu2()
Dim fso
Dim b1, b3, b4
Set fso = CreateObject("scripting.filesystemobject")
a1 = fso.getdrive("C:\")
a2 = fso.getdrivename("C:\")
a3 = fso.getbasename("C:\Users\Administrator\Desktop\test102.TXT")
a4 = fso.getextensionname("C:\Users\Administrator\Desktop\test102.TXT")
a5 = fso.getabsolutepathname("C:\Users\Administrator\Desktop\test102.TXT")
Set b1 = fso.getfile("C:\Users\Administrator\Desktop\test102.TXT")
b2 = fso.getfilename("C:\Users\Administrator\Desktop\test102.TXT")
Set b3 = fso.getfolder("C:\Users\Administrator\Desktop")
'Set b4 = fso.getspecialfolder("C:\Users\Administrator")
b5 = fso.getparentfoldername("C:\Users\Administrator\Desktop\test102.TXT")
'b6 = fso.getptempname
Debug.Print a1
Debug.Print a2
Debug.Print a3
Debug.Print a4
Debug.Print a5
Debug.Print
Debug.Print b1
Debug.Print b2
Debug.Print b3
'Debug.Print b4
Debug.Print b5
'Debug.Print b6
End Sub
fso的对象
- 文件夹
- fso.bulidpath()
- fso.createfolder()
- fso.copyfolder()
- fso.movefolder()
- fso.deletefolder()
- fso.folderexist()
- fso.driveexist()
- fso.fileexist()
- 文件
- fso.createtextfile
- fso.opentextfile
- fso.copyfile()
- fso.movefile()
- fso.deletefile()
fso.createtextfile
fso.opentextfile
folder对象
- folder.copy()
- folder.move()
- folder.delete()
- folder.createtextfile()
处理文件的方法
- file.OpenAsTextStream()
- object.OpenAsTextStream([iomode, [format]])
- file.copy()
- file.move()
- file.delete()
TextStream 对象
处理文本文件的方法 object--file
- object.read
- object.readline
- object.readall
- object.skip
- object.skipline
- object.write
- object.writeline
- object.writeblankline
- object.close
3.6 FSO很多方法和属性
fso.getfile
fso.getfilename
fso.getExtensionName
fso.getBasename
https://baijiahao.baidu.com/s?id=1637364844505511630&wfr=spider&for=pc
变量调用
getfso=fso.DriveExists("g:\") '判断指定硬盘驱动器是否存在
getfso=fso.GetDrive("c:") '创建自定义的FSO驱动器对象
getfso=fso.GetDriveName("c:\网络程序员伴侣") '返回文件夹的所在盘符
Set getfso=fso.Drives '创建FSO驱动器集合对象,多配合for each i in
getfso语句进行穷尽操作,支持所有[驱动器对象属性],并具有Count和Item属性
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
驱动器对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetDrive("c:").FileSystem '返回驱动器对象的文件系统类型
getfso=fso.GetDrive("c:").DriveType '返回驱动器对象的驱动器类型,返回值范围0-5
getfso=fso.GetDrive("c:").DriveLetter '返回驱动器对象的字母
getfso=fso.GetDrive("c:").IsReady '返回指定驱动器是否准备好或是否损坏
getfso=fso.GetDrive("c:").SerialNumber '返回驱动器对象的唯一十进制卷标序号
getfso=fso.GetDrive("c:").ShareName '返回驱动器对象的网络共享名
getfso=fso.GetDrive("c:").VolumeName '返回驱动器对象的卷标名,同时也可以设置其卷标名
getfso=fso.GetDrive("c:").Path '返回驱动器的实际路径,如c:\则返回c:
getfso=fso.GetDrive("c:").RootFolder '返回驱动器对象的跟文件夹
getfso=fso.GetDrive("c:").AvailableSpace'返回驱动器对象的可用容量大小
getfso=fso.GetDrive("c:").FreeSpace '返回驱动器对象的剩余空间大小
getfso=fso.GetDrive("c:").TotalSize '返回驱动器对象的总空间容量大小
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
系统文件夹操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFolder("c:\") '创建自定义的FSO文件夹对象
getfso=fso.FolderExists("e:\网络程序员伴侣") '判断指定文件夹是否存在
getfso=fso.GettempName '随机返回WINDOW产生在temp文件夹中的临时文件
getfso=fso.GetparentFolderName("e:\网络程序员伴侣") '返回指定文件夹的父文件夹
fso.CreateFolder "c:\windows\新创建的文件夹路径及名称"
fso.MoveFolder "c:\windows\许移动或改名的文件夹","c:\windows\移动路径和新的文件夹名"
fso.DeleteFolder "c:\windows\要删除的目录名",false/true
fso.CopyFolder "c:\windows\须复制的目录名","c:\windows\得到付值内容的目录名",false/true
Set getfso=fso.Folders '创建FSO文件夹集合对象,多配合for each i in getfso语句进行穷尽操作,支持所有[文件夹对象属性],并具有Count和Item属性,具有AddFolders方法
Set getfso=fso.Files '创建FSO文件夹内文件集合对象,多配合for each i in getfso语句进行穷尽操作,支持所有[文件对象属性],并具有Count和Item属性
Set fso=Nothing '释放fso变量与FSO组件的连接资源</script>
文件夹对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFolder("c:\windows").Name '返回文件夹的名字,这里返回WINDOW
getfso=fso.GetFolder("c:\windows").ShortName '返回文件夹[8.3]格式的名称
getfso=fso.GetFolder("c:\windows").Attributes '返回文件夹的属性,可返回0,1,2,4,8,16,32,64,128
getfso=fso.GetFolder("c:\windows").Size '返回文件夹(包括子文件夹)内文件占用空间大小
getfso=fso.GetFolder("c:\windows").Type '返回文件夹类型信息
getfso=fso.GetFolder("c:\windows").Path '返回文件夹的真实路径
getfso=fso.GetFolder("c:\windows").ShortPath '返回文件夹[8.3]格式的路径
getfso=fso.GetFolder("c:\windows").Drive '返回文件夹所在驱动器
getfso=fso.GetFolder("c:\windows").Files.count '返回文件夹包含的所有文件对象集合
getfso=fso.GetFolder("c:\windows").SubFolders.count '返回文件夹包含的所有子文件夹的对象集合
getfso=fso.GetFolder("c:\windows").ParentFolder '返回文件夹的父文件夹对象
getfso=fso.GetFolder("c:\windows").IsRootFolder '返回文件夹是否为跟文件夹,是返回true否返回false
getfso=fso.GetFolder("c:\windows").DateCreated '返回文件夹的最初创建时间
getfso=fso.GetFolder("c:\windows").DateLastAccessed '返回文件夹最后一次访问时间
getfso=fso.GetFolder("c:\windows").DateLastModified '返回文件夹最近修改的时间
fso.GetFolder("c:\windows").CreateTextFile "新建的文件名及后缀",true/false,true/false
fso.GetFolder("c:\windows\要删除的目录名").Delete true
fso.GetFolder("c:\windows\要移动改名的目录名").Move "文件夹将要移动到的路径及自定义文件夹名称"
fso.GetFolder("c:\windows\旧目录").Copy "复制到路径",true/false '在指定路径付值此文件夹,true=覆盖,false相反
Set fso=Nothing '释放fso变量与FSO组件的连接资源</script>
系统文件操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFile("c:\windows\help.html") '得到文件完整路径
getfso=fso.GetFileName("c:\windows\help.html") '得到文件名称和后缀
getfso=fso.GetExtensionName("c:\windows\help.html") '得到文件的文件类型(后缀),不含小数点
getfso=fso.FileExists("c:\windows\文件名.html") '判断文件是否存在
fso.MoveFile "要移动及改名的原文件路径","移动到某路径及自定义新文件名"
fso.DeleteFile "c:\windows\要删除的文件所在路径",false/true
fso.CopyFile "c:\windows\须复制的旧文件.txt","c:\windows\复制后的文件名.jpg",false/true
fso.OpenTextFile "c:\windows\desktop\要打开操作的文件名称.txt",1/2/8,true/false,0/-1/-2 'ForReading=1=只读方式,ForWriting=2=可写方式,ForAppending=8=追加方式.true=如果打开的文件不存在则创建该文件.TristateFalse=0=以系统默认方式打开,TristateTrue=-1=以Unicode格式打开文件,TristateUseDefaule=-2=以ASCLL格式打开文件(缺剩值)
fso.CreateTextFile "c:\windows\desktop\新建的文件名称.txt",false/true,false/true '前者true覆盖以存在同名文件,后者为true新文件将以Unicode方式创建,反之=结果相反
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
文件对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFile("c:\windows\笔记本.txt").Name '返回文件对象的名称包含后缀
getfso=fso.GetFile("c:\windows\笔记本.txt").ShortName '返回文件对象的[8.3]名称包含后缀
getfso=fso.GetFile("c:\windows\笔记本.txt").Attributes '返回文件对象的属性,可返回0,1,2,4,8,16,32,64,128
getfso=fso.GetFile("c:\windows\笔记本.txt").Size '返回文件对象的大小
getfso=fso.GetFile("c:\windows\笔记本.txt").Type '返回文件对象的类型
getfso=fso.GetFile("c:\windows\笔记本.txt").Path '返回文件对象的完整路径
getfso=fso.GetFile("c:\windows\笔记本.txt").ShortPath '返回文件对象的[8.3]的完整路径
getfso=fso.GetFile("c:\windows\笔记本.txt").Drive '返回此文件对象所在的驱动器
getfso=fso.GetFile("c:\windows\笔记本.txt").ParentFolder '返回文件对象所在的文件夹
getfso=fso.GetFile("c:\windows\笔记本.txt").DateCreated '返回文件对象的创建日期
getfso=fso.GetFile("c:\windows\笔记本.txt").DateLastAccessed '返回文件对象的最后访问日期
getfso=fso.GetFile("c:\windows\笔记本.txt").DateLastModified '返回文件对象的最后修改时间
fso.GetFile("c:\windows\笔记本.txt").Copy "复制到的路径和文件名",true/false
fso.GetFile("c:\windows\笔记本.txt").Delete true
fso.GetFile("c:\windows\笔记本.txt").Move "移动到的路径及自定义文件名
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
文件对象读写操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
set link1=fso.GetFile("c:\windows\笔记本.txt").OpenAsTextStream(1/2/8,0/-1/-2)
open1=link1.AtendOfline '判断文件指针是否以在行的末尾
open2=link1.AtendOfstream '判断文件指针是否一再文件的末尾
open3=link1.Column '返回当前字符所在文件的列号
open4=link1.Line '返回当前字符所在文件的行号
open5=link1.Read(10) '读取文件中指定数量的字符
open6=link1.ReadAll '读取文件中所有的字符
open7=link1.ReadLine '读取文件中一行中含有的字符
open8=link1.Write "字符串" '将自定字符串或字符串变量写入文件
open9=link1.WriteLine "字符" '将自定字符+一个换行符写入文件
open10=link1.WriteBlankLines 10 '将指定数量的换行符写入文件
open11=link1.Skip 10 '使文件指针跳过指定数量的字符
open12=link1.SkipLine '使文件指针跳到下一行
link1.Close '文件操作完毕,销毁文件对象指针