VBS脚本COM对象扩展及使用(3)

一、创建常用操作COM接口对象及方法
  CreateObject,这条命令可以访问windows系统内安装的所有com对象,并且可以调用这些部件中存放的命令。
  WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:

    1、Scripting.FileSystemObject  —>  提供一整套文件系统操作函数
    2、Scripting.Dictionary  —>  用来返回存放键值对的字典对象
    3、Wscript.Shell  —>  提供一套读取系统信息的函数
                                 (如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置)
    4、Wscript.NetWork  —>  提供网络连接和远程打印机管理的函数。

  
     注: 所有Scripting对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。

      例程:
            option Explicit   ‘所有变量先执行后使用选项
            dim objShell

            '对象值必须使用SET关键字赋值
            set objShell = CreateObject("WScript.Shell")

            '非阻塞调用,顺序执行
            objShell.Run "notepad" 

             '阻塞调用,APP关闭后执行一条
            objShell.Run "notepad" ,,true 

             '非阻塞调用,打开计算器
            objShell.Run "calc"

            '注:回避空格带来的问题, 使用引号""
            'Run "程序路径",窗口样式(0后台运行;1正常运行;2激活最小化;3激活最大化;.....),运行等待(True)
            objshell.Run """C:\Program Files\QQ2006\QQ.exe"""

二、错误处理
 
      脚本运行不正常时,会导致运行时错误,此时屏幕上会显示MsgBox.

    On  Error Resume  Next 

    这行语句告诉vbs在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。
    发生错误时,该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。

    vbscript提供了一个err对象
           两个方法clear,raise,
           5个属性:description,helpcontext,helpfile,number,source

    err对象不用引用实例,可以直接使用,例如:
        on error resume next
            a=11
            b=0
            c=a/b
        if err.number<>0 then
            wscript.echo err.number & err.description  & err.source
        end if  
 
三、注册表操作
     1、读注册表 Wscript.Shell.Regread
            set ws = wscript.createobject("Wscript.Shell")
            value = ws.regread("HKLM\Software\7-Zip\Path ")
            wscript.echo  value


    2、写注册表 Wscript.Shell.Regwrit

        path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
        set ws=wscript.createobject("wscript.shell")
        t=ws.regwrite(path & "jj","hello")
        '创建一个新的值
        val=ws.regwrite(path,"newboy")


       注: Run\jj这个键值改成了hello.(键值一定要预先存在)

    3、删除关键字和值 Wscript.Shell.Regdelete
        val=ws.Regdelete(path)

四 、文件系统操作(重要)
       SET  FSOobj  = Wscript.createobject("Scripting.FileSystemObject")

       1、FSO包含的常见对象有:
            Drive对象:包含储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器
            Drives集合:提供一个物理和逻辑驱动器的列表
            File  对象:检查和处理文件
            Files 集合:提供一个文件夹中的文件列表
            Folder对象:检查和处理文件夹
            Folders集合:提供文件夹中子文件夹的列表
            Textstream对象:读写文本文件
            FSO的常见方法有:
            BulidPath:把文件路径信息添加到现有的文件路径上
            CopyFile:复制文件
            CopyFolder:复制文件夹
            CreateFolder:创建文件夹
            CreateTextFile:创建文本并返回一个TextStream对象
            DeleteFile:删除文件
            DeleteFolder:删除文件夹及其中所有内容
            DriveExits:确定驱动器是否存在
            FileExits:确定一个文件是否存在
            FolderExists:确定某文件夹是否存在
            GetAbsolutePathName:返回一个文件夹或文件的绝对路径
            GetBaseName:返回一个文件或文件夹的基本路径
            GetDrive:返回一个dreve对象
            GetDriveName:返回一个驱动器的名字
            GetExtensionName:返回扩展名
            GetFile:返回一个file对象
            GetFileName:返回文件夹中文件名称
            GetFolder:返回一个文件夹对象
            GetParentFolderName:返回一个文件夹的父文件夹
            GetSpecialFolder:返回指向一个特殊文件夹的对象指针
            GetTempName:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称
            MoveFile:移动文件
            MoveFolder:移动文件夹
            OpenTextFile:打开一个存在的文件并返回一个TextStream对象

             
     2、文件夹操作等

           '创建模型
           DIM  objFS
           SET objFS = Wscript.createobject(“Scripting.FileSystemobject”)
           '释放模型
           'SET objFS = nothing
   
           if (  objFS.FolderExists("c:\temp") )           '检查文件夹是否存大
           objFS.Deletefolder("c:\temp")                   '删除文件夹
           objFS.CopyFolder "c:\data" "d:\data",'True     '复制文件夹,覆盖选项
           objFS.movefolder "c:\data\te*" "d:\data\"       '\自动创建d:\data文件夹
           objFS.getspecialfolder(0)                       '返回windows目录
           objFSgetspecialfolder(1)                        '返回system32\
           objFSgetspecialfolder(2)                            '返回临时目录
     3、文件操作等

            在windows中,文件的属性一般用数字来表示:
            0代表normal,即普通文件未设置任何属性。   1代表只读文件。
            2代表隐藏文件。   4代表系统文件。   16代表文件夹或目录。

            32代表存档文件。 1024代表链接或快捷方式。

           Column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1。

'检查创建文件  
set fso = wscript.createobject(“scripting.filesystemobject”)  
if fso.fileexists(“c:\kk.txt”) then  
    msgbox "文件已存在"  
else  
    set f = fso.createtextfile("c:\kk.txt" ', true ' )     'true参数: 覆盖已存在的文件  
end if  
  
fso.copyfile "c:\kk.txt","d:\1\kk.txt", true     'rue代表强制覆盖  
fso.movefile "c:\kk.txt", "d:\"                      '移动文件  
fso.deletefile "c:\kk.txt"                              '删除文件  
  
set ts = fso.opentextfile(“c:\kk.txt”,1,true)     '打开文件:1为只读、2写入、8为追加  
  
set ffile=fso.opentextfile(“c:\kk.txt”,1,true)  
value=ffile.read(20)   'read(x)读x个字符  
line=ffile.readline     'readline读一行  
contents=ffile.readall  'readall全部读取  
  
do while ffile.atendofstream<>true '行末尾,这个属性返回true。  
    ffile.read(10)  
loop  
            skip(x)  跳过x个字符;
            skipline  跳过一行

           write(x)写入x字符串;
           writeline(x)写入x代表的一行
           writeblanklines(n) 写入n个空行
           lose方法关闭文件,读文件后一定要关闭,才能以写的方式打开。
 

你可能感兴趣的:(BAT/VBS/VBA)