关闭

VBS脚本技术手册(3)

634人阅读 评论(0) 收藏 举报

忽略对只读属性(别名,压缩或目录)所作的改变. 当设置属性时,应首先阅读当前属性,然后按要求改变个别属性,最后反写属性.

例子:1:

Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.Attributes

2:

Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.Attributes

MyFile.Attributes=1

msgbox MyFile.Attributes

02:DateCreated 属性--【file、folder】返回指定的文件或文件夹的创建日期和时间。只读。

object.DateCreated

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.datecreated

会返回2009-05-25 19:20:10

03:DateLastAccessed 属性--【file、folder】返回指定的文件或文件夹的上次访问日期和时间。只读。

object.DateLastAccessed

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.DateLastAccessed

04:DateLastModified 属性--【file、folder】

返回指定的文件或文件夹的上次修改日期和时间。只读。

object.DateLastModified

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.DateLastModified

05:Drive 属性--【file、folder】返回指定的文件或文件夹所在的驱动器的驱动器号。只读。

object.Drive

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.drive

会返回"c:"注意,只有冒号。

06:Name 属性设置或返回指定的文件或文件夹的名称。可读写。

object.Name [= newname]

object必选项。应为 File 或 Folder 对象的名称。

newname可选项。如果提供此参数,则指定的 object 名称更新为 newname。

例子:1:

Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.name

会返回"test.txt"

2:

Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.name

MyFile.name="test1.txt"'注意要有引号

msgbox MyFile.name

07:ParentFolder 属性--【file、folder】返回指定文件或文件夹的父文件夹。只读。

object.ParentFolder

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")

set MyFile =fso.GetFile("c:/test.txt")

msgbox MyFile.parentfolder

会显示"c:/"

08:Path 属性--【file、folder】返回指定文件、文件夹或驱动器的路径。

object.Path ,object 应为 File、Folder 或 Drive 对象的名称。对于驱动器,路径不包含根目录。例如,C 驱动器的路径是 C:,而不是 C:/。

例子:Dim fso, d

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set d = fso.GetDrive("c")

      msgbox d.path

将会返回"c:"仅有冒号。

09:ShortName 属性返回按照早期 8.3 文件命名约定转换的短文件名。

object.ShortName ,object 应为 File 或 Folder 对象的名称。

例子:Dim fso, f, s

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set f = fso.GetFile("C:/Program Files/Internet Explorer/JSProfilerCore.dll")

    msgbox f.ShortName

将会返回"japrof~1.dll"

 10:ShortPath 属性

返回按照 8.3 命名约定转换的短路径名。

object.ShortPath

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, f, s

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set f = fso.GetFile("C:/Program Files/Internet Explorer/JSProfilerCore.dll")

    msgbox f.shortpath

将会返回"c:/progra~1/intern~1/jsprof~1.dll"

11:Size 属性对于文件,返回指定文件的字节数;对于文件夹,返回该文件夹中所有文件和子文件夹的字节数。

object.Size

object 应为 File 或 Folder 对象的名称。

例子:Dim fso, f, s

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set f = fso.GetFile("C:/Program Files/Internet Explorer/JSProfilerCore.dll")

      msgbox f.size/1024&kB

将会返回115KB

12:Type 属性返回文件或文件夹的类型信息。例如,对于扩展名为 .TXT 的文件,返回“Text Document”。

object.Type ,object 应为 File 或 Folder 对象的名称。

例子:Dim fso, f, s

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.GetFile("C:/Program Files/Internet Explorer/JSProfilerCore.dll")

     msgbox f.type

将会返回"应用程序扩展"

 四、Folder 对象提供对文件夹所有属性的访问。

以下代码举例说明如何获得 Folder 对象并查看它的属性:

  Dim fso, f,
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set f = fso.GetFolder(folderspec)
     msgbox  f.DateCreated

以下属性为重复属性,参见File 对象

Attributes 属性 | DateCreated 属性 | DateLastAccessed 属性 | DateLastModified 属性 | Drive 属性 |  Name Property | ParentFolder 属性 | Path Property | ShortName 属性 | ShortPath 属性 | Size 属性 | Type 属性

1:Files 属性返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。

object.Files object 应为 Folder 对象的名称。

例子:Dim fso, f, f1, fc, s

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.GetFolder("c:/test")

     Set fc = f.Files

     For Each f1 in fc

     s = s & f1.name

     Next

msgbox s

将会列举c:/test下面的所有文件,不包含子目录中的文件。

2:IsRootFolder 属性如果指定的文件夹是根文件夹,返回 Tr;否则返回 False。

object.IsRootFolder ,object 应为 Folder 对象的名称。

例子:Dim fso, f, f1, fc, s

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.GetFolder("c:/")

msgbox f.isrootfolder

会返回ture

Dim fso, f, f1, fc, s

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.GetFolder("c:/test")

msgbox f.isrootfolder

会返回false

3:S?olders 属性

返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合。

object.S?olders object 应为 Folder 对象的名称。

例子:Dim fso, f, f1, s, sf

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.GetFolder("c:/test")

     Set sf = f.S?olders

     For Each f1 in sf

     s = s&f1.name

     Next

     msgbox s

会返回test下所有文件夹的名字。

以下方法重复,参见File 对象

Copy 方法 | Delete 方法 | Move 方法 | CreateTextFile 方法

 五、TextStream有助于顺序访问文件。

在下列代码中,a 是由 FileSystemObject 中的 CreateTextFile 方法返回的 TextStream 对象:

Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
SetMyFile= fso.CreateTextFile("c:/testfile.txt", Tr)
MyFile.WriteLine("这是一个测试。")
MyFile.Close

1:Close 方法 关闭打开的 TextStream 文件。

object.Close,object 应为 TextStream 对象的名称。

例子:Dim fso, MyFile
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set MyFile = fso.CreateTextFile("c:/testfile.txt", Tr)
      MyFile.WriteLine("这是一个测试。")
      MyFile.Close
2:Read 方法从 TextStream 文件中读入指定数目的字符并返回结果字符串。

object.Read(characters)

object必选项。应为 TextStream 对象的名称。

characters必选项。要从文件读的字符数目。

例子:1:

Dim fso, f, Msg

          Set fso = CreateObject("Scripting.FileSystemObject")  

  Set f = fso.OpenTextFile("c:/testfile.txt", 2, Tr)

  f.Write "世界你好!"

          Set f = fso.OpenTextFile("c:/testfile.txt", 1)

          msgbox f.Read(2)

将会返回"世界"

2:将会一个字符一个字符地读取。

Dim fso, f,ch

        Set fso = CreateObject("Scripting.FileSystemObject")

         Set f = fso.OpenTextFile("c:/test.txt",1, False)

         Do While f.AtEndOfLine <> Tr

         ch =f.Read(1)

         msgbox ch

         Loop

         f.Close

3:ReadAll 方法读入全部 TextStream 文件并返回结果字符串。

object.ReadAll,object 应为 TextStream 对象的名称。

例子:Dim fso, f

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.OpenTextFile("c:/testfile.txt", 1)

    msgbox f.ReadAll

 4:Skip 方法

读取 TextStream 文件时跳过指定数目的字符。

object.Skip(characters)

object必选项。应为 TextStream 对象的名称。

characters必选项。读取文件时跳过的字符数目。

例子:Dim fso, f, Msg

      Set fso = CreateObject("Scripting.FileSystemObject")  

      Set f = fso.OpenTextFile("c:/testfile.txt", 2, Tr)

       f.Write "世界你好!"

      Set f = fso.OpenTextFile("c:/testfile.txt", 1)

      f.skip(2)

      msgbox f.read(3)

将会返回“你好!”注意这个方法本身返回值为空。

5:SkipLine 方法 当读到 TextStream 文件时,跳过下一行。

object.SkipLine,object 应为 TextStream 对象名称。 跳过一行意味着读并放弃本行所有字符并包括下一新行字符内容。 如果文件不是以读方式打开则会出现错误。

例子:Dim fso, f

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.OpenTextFile("c:/testfile.txt", 2, Tr)

     f.Write "嗨,你好!" & vbCrLf & "VB脚本很有趣!"

    f.close

    Set f = fso.OpenTextFile("c:/testfile.txt",1)

    f.SkipLine

    msgbox f.ReadLine

将会返回“vb很有趣!”

6:Write 方法  向 TextStream 文件写入指定字符串。

object.Write(string)object必选项。应为 TextStream 对象的名称。string可选项。要写入文件的文本。

例子:Dim fso, f

      Set fso = CreateObject("Scripting.FileSystemObject")  

      Set f = fso.openTextFile("c:/testfile.txt", 2, tr)

      f.Write "世界你好!"

      Set f = fso.openTextFile("c:/testfile.txt", 1)

msgbox f.read(4)

7:WriteLine 方法 向 TextStream 文件新行写入指定字符串和字符。

object.WriteLine([string])object必选项。应为 TextStream 对象的名称。string可选项。要写入文件的文本。如果省略,将向文件写入新行字符。

Dim fso, f

   Set fso = CreateObject("Scripting.FileSystemObject")  

   Set f = fso.openTextFile("c:/testfile.txt", 2, tr)

   f.Writeline "哈哈1"

   f.Writeline "哈哈2"

   Set f = fso.openTextFile("c:/testfile.txt", 1)

msgbox f.readall

8:WriteBlankLines 方法

在 TextStream 文件中写入指定数目的空新行。

object.WriteBlankLines(lines)

object必选项。应为 TextStream 对象的名称。

lines必选项。要向文件写入的新行字符数目。

Dim fso, f

  Set fso = CreateObject("Scripting.FileSystemObject")  

   Set f = fso.openTextFile("c:/testfile.txt", 2, tr)

   f.WriteBlankLines(3)

   Set f = fso.openTextFile("c:/testfile.txt", 1)

msgbox f.readall

1:AtEndOfLine 属性TextStream 文件中,如果文件指针指向行末标记,就返回 Tr;否则如果不是只读则返回 False。

object.AtEndOfLine,object 应为 TextStream 对象的名称。

AtEndOfLine 属性仅应用于以读方式打开的 TextStream 文件,否则会出现错误。

Dim fso, f,ch

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set f = fso.OpenTextFile("c:/test.txt",1, False)

      Do While f.AtEndOfLine <> Tr

      ch =f.Read(1)

f.skipline

      msgbox ch

      Loop

      f.Close

2:AtEndOfStream 属性如果文件指针位于 TextStream 文件末,则返回 Tr;否则如果不为只读则返回 False。

object.AtEndOfStreamobject 应为 TextStream 对象的名称。

AtEndOfStream 属性仅应用于以只读方式打开的 TextStream 文件,否则会出现错误。

例子:Dim fso, f,ch

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set f = fso.OpenTextFile("c:/test.txt",1, False)

      Do While f.AtEndOfStream <> Tr

      ch =f.Read(1)

      msgbox ch

      Loop

      f.Close

3:Column 属性只读属性,返回 TextStream 文件中当前字符位置的列号。

object.Column,object 通常是 TextStream 对象的名称。在写入新行字符后,但在写其他字符前,Column 等于 1。

例子:Dim fso, f,ch

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f = fso.OpenTextFile("c:/test.txt",1, False)

     Do While f.AtEndOfStream <> Tr

     msgbox f.Column&"列"&f.Read(1)

     Loop

     f.Close

4:Line 属性只读属性,返回 TextStream 文件中的当前行号。

object.Lineobject 通常是 TextStream 对象的名称。

文件刚刚打开并在写入任何信息前,Line 等于 1。

例子:Dim fso, f,ch

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set f = fso.OpenTextFile("c:/test.txt",1, False)

      Do While f.AtEndOfStream <> Tr

      msgbox f.line&"行"&f.Column&"列是:"&f.Read(1)

      Loop

      f.Close

 六、wscript内置的对象

1:CreateObject 方法CreateObject(appname.objecttype,[servername])

appname 必需的;Variant(字符串)。提供该对象的应用程序名。

objecttype 必需的;Variant(字符串)。待创建对象的类型或类。

servername 可选的; Variant (String). 要在其上创建对象的网络服务器名称。

2:Quit 方法退出执行,返回指定的错误代码。

object.Quit [intErrorCode]

objectWScript 对象。

intErrorCode可选项。如果包含此参数,WScript 将把它作为进程终止码返回。如果省略了 intErrorCode,WScript 将返回零 (0) 作为进程终止码。

示例

WScript.Quit

3:Sleep 方法

使脚本进程在指定的毫秒数内处于非活动状态,然后继续执行。

object.Sleep(intTime)

object,WScript 对象。

intTime,脚本进程在非活动状态的时间长度,以毫秒为单位。

在睡眠状态下,脚本将继续执行所处理的事件。如果脚本引擎超时 或被中断,睡眠将立即结束。

例子: wscript.sleep(3000)

set apprun=createobject("wscript.shell")

apprun.run "%windir%/notepad.exe"

此例子将会延迟3秒启动记事本。

4:GetObject 方法从文件中检索一个 Automation 对象, 或检索strProgID 参数所指定的对象

object.GetObject(strPathname [,strProgID], [strPrefix])

objectWScript 对象。

strPathname必选项。包含要获取的对象的完整路径和名称。

strProgID可选项。表示对象的程序标识符(ProgID)的字符串。

strPrefix可选项。如果指定了参数 strPrefix,Windows 脚本宿 主将在创建对象之后把对象的输出接口与脚本文件连接起来。在对象中触发事件时,Windows 脚本宿主将调用一个子例程,其名称包括 strPrefix 和事件的名称。

例如,如果 strPrefix 为 "MYOBJ_",对象产生的事件为 "OnBegin,",那么 Windows 脚本宿主将调用脚本中的 "MYOBJ_OnBegin" 子例程。

如果当前存在对象的实例或者希望使用已经被装载的文件创建对象,可使用 GetObject 方法。如果当前不存在实例,而且不希望 从已经装载的文件中启动对象,请使用 CreateObject 方法。

如果一个对象将自己注册为单实例对象(例如,Microsoft Word 7.0 中的 Word.Basic 对象),那么无论执行 CreateObject 多少次也只能创建对象的一个实例。此外,对于单实例的对象,如果用零长度的字符串语法("")调用,GetObject 总是返回同样的实例,而且如果省略路径参数将导致错误。使用 GetObject 不能获得对 Vis l Basic 4.0 以及以前版本创建的 Microsoft Vis l Basic(R)类的引用。

GetObject 适用于所有的 COM 类,不受创建对象所用语言的限制。

示例

在执行下列代码时,与指定的 strPathname 相关联的应用程序被启动,指定文件中的对象被激活。 如果 strPathname 是一个零长度的字符串 (""), GetObject 将返回指定类型的新对象实例。如果 strPathname 参数完全被省略,GetObject 将返回指定类型的当前活动对象。如果不存在指定类型的对象,将发生错误。

Dim MyObject As Object
Set MyObject = GetObject("C:/CAD/SCHEMA.CAD")
MyApp = MyObject.Application

某些应用程序允许激活一个文件的某些部分。如果要这样做,需要在文件名后添加一个惊叹号 (!),然后跟一个字符串,标识出文件中希望被激活的部分。关于如何创建该字符串的信息,请参阅创建对象的应用程序的有关文档。

例如,在一个绘图应用程序中,文件中存储的一幅图可能包含多层。可以使用下面的代码激活绘图文件中称为 schema.cad 的一层:

Set LayerObject = GetObject("C:/CAD/SCHEMA.CAD!Layer3")

如果不指定对象的类,COM 将根据所提供的文件名来确定要启动的应用程序和要激活的对象。但是,某些文件可能支持多个对象类。例如,一幅图纸可能支持三种不同类型的对象:一个应用程序对象,一个绘图对象,以及一个工具栏对象,它们都是同一个文件的组成部分。

在下例中,FIGMENT 是一个绘图应用程序的名称,DRAWING 是它支持的对象类型之一。

Dim MyObject As Object
Set MyObject = GetObject("C:/DRAWINGS/SAMPLE.DRW", "FIGMENT.DRAWING")

5:Echo 方法将输出发送到对话框或控制台。

object.Echo [Arg1] [,Arg2] [,Arg3] ...

object,WScript 对象。Arg1, Arg2, Arg3 ...,所显示的项的列表。

例子:set fso=createobject("scripting.filesystemobject")

     set f=fso.opentextfile("c:/test.txt")

wscript.echo f.readall

将会显示这个文件里面的所有内容。这么看来,他的功能跟msgbox一样,不过不如他强大。

6:ConnectObject 方法将一个对象事件源连接到具有给定前缀的函数。

object.ConnectObject strObject, strPrefix

objectWScript 对象。

strObject要连接的对象的名称。

strPrefix事件函数的前缀。

示例

下例实例化了一个假想的对象,并将其连接到脚本文件。然后脚本调用该对象的 "SomeMethod" 方法。如果对象中发生了名为 "Event"的事件,将调用 MyEvent_Event 子例程。

Set MyObject = WScript.CreateObject("SomeObject")
MyObject.SomeMethod
WScript.ConnectObject MyObject, "MyEvent"
S MyEvent_Event(strName)
   WScript.Echo strName
End S
WScript.DisconnectObject MyObject

7:DisconnectObject 方法将原先与 Windows 脚本宿主连接的对象断开。

object.DisconnectObject obj

object,WScript 对象。Obj,要断开连接的对象的名称。

示例

下例创建了一个假想的对象并将其连接到脚本文件。然后脚本调用对象的 "SomeMethod" 方法。如果对象中发生名为 "Event" 的错误,MyEvent_Event 子例程将被调用。

Set MyObject = WScript.CreateObject("SomeObject", "MyEvent")
MyObject.SomeMethod
S MyEvent_Event(strName)
   WScript.Echo strName
End S
WScript.DisconnectObject MyObject

七、wshshell

1:AppActivate 方法激活一个应用程序窗口。

AppActivate title ,title必选项。一个字符串表达式,指定在要激活的应用程序窗口的标题栏的标题。可以使用由 Shell 函数返回的任务 ID 代替标题来激活应用程序。

说明

AppActivate 语句将焦点转移到指定的应用程序或窗口,但并不影响它是否为最大化或最小化。当用户采取措施移动焦点或关闭窗口时,焦点将从被激活的应用程序窗口上移走。使用 Shell 函数可启动应用程序并设置窗口的样式。

为了确定激活哪个应用程序,需要将title与每个正在运行的应用程序的标题字符串进行比较。如果没有发现精确的匹配,则标题字符串以 "title" 开始的应用程序被激活。 如果仍未找到应用程序,则标题字符串的尾部为 title 的应用程序被激活。 如果 title 指定的应用程序有多个实例,则任选其中一个实例予以激活。

例子

下例演示了如何在两个使用不同脚本语言(VBScript and JScript)的任务中使用同一个 .wsf 文件。这两个任务的功能相同——即启动Windows 计算器和发出键击来执行一些简单计算。

set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "calc"

WScript.Sleep 100

WshShell.AppActivate "Calculator"

WScript.Sleep 100

WshShell.SendKeys "1{+}"

WScript.Sleep 500

WshShell.SendKeys "2"

WScript.Sleep 500

WshShell.SendKeys "~"

WScript.Sleep 500

WshShell.SendKeys "*3"

WScript.Sleep 500

WshShell.SendKeys "~"

WScript.Sleep 2500

2:CreateShortcut 方法创建一个对象引用,指向一个快捷方式或 URLshortcut。

object.CreateShortcut(strPathname)

object,WScript 对象。

strPathname,被创建的快捷方式的路径与文件名。

CreateShortcut 方法创建了一个 WshShortcut 对象并将其返回。 该方法可用于创建新的快捷方式,或者打开原来的快捷方式以修改其属性。 一个 Windows 快捷方式必须有扩展名 “.lnk”。 如果快捷方式标题以 “.url” 结束,则创建一个 WshURLShortcut 对象。

示例

下例演示了如何在两个使用不同脚本语言(VBScript and JScript)的任务中使用同一个 .wsf 文件。这两个任务的功能相同——创建一个快捷方式,指向当前执行的脚本;一个 URL 快捷方式,指向 www.microsoft.com

set WshShell = WScript.CreateObject("WScript.Shell")

strDesktop = WshShell.SpecialFolders("Desktop")

set oShellLink = WshShell.CreateShortcut(strDesktop & "/Shortcut Script.lnk")

    oShellLink.TargetPath = WScript.ScriptFullName

    oShellLink.WindowStyle = 1

    oShellLink.Hotkey = "CTRL+SHIFT+F"

    oShellLink.IconLocation = "notepad.exe, 0"

    oShellLink.Description = "Shortcut Script"

    oShellLink.WorkingDirectory = strDesktop

    oShellLink.Save

set oUrlLink = WshShell.CreateShortcut(strDesktop & "/Microsoft Web Site.url")

oUrlLink.TargetPath = "http://www.microsoft.com"

oUrlLink.Save

3:ExpandEnvironmentStrings 方法扩展正在运行的进程所请求的环境变量,返回结果字符串。

object.ExpandEnvironmentStrings(strString)

objectWshShell 对象。

strString需要扩展的环境变量的名称。变量被 "%" 字符括起来。 环境变量的名称是不区分大小写的。

例子:下例展开 WinDir 环境变量并将其显示在一个消息框中:

set WshShell = CreateObject("WScript.Shell")
WScript.Echo "WinDir 为 " & WshShell.ExpandEnvironmentStrings("%WinDir%")

会显示"c:/windows"

4:LogEvent 方法在 Windows NT 事件日志或 WSH.log 文件中记录一个事件。

object.LogEvent(intType, strMessage [,strTarget])

object,WshShell 对象。

intType代表事件类型的数字。

strMessage日志项的文本。

strTarget可选项,仅适用于 Windows NT。用于记录事件的系统的名称。缺省值为本地系统。 在 Windows 9x 中该参数被忽略。

LogEvent 类型可为下列类型之一:

2

警告

4

信息

0

成功

8

审计成功

1

错误

16

审计失败

对 Windows NT:在 Windows NT 事件日志中记录一个事件。

对 Windows 9x:在 WSH.log 中记录一个事件,该文件在用户的 Windows 目录下。WSH.log 文件中将包含时间标记、 事件类型,以及日志项的文本。

如果事件成功地记入日志,返回 tr;否则,返回 false。

5:Popup 方法显示一个弹出式的消息框,其中包含 strText 中的消息。

intButton = object.Popup("提示文本",[等待秒数],[窗口标题],[按钮类型])

object,WshShell 对象。

strText,出现在弹出式菜单中的文本。

natSecondsToWait,可选项。在关闭弹出式菜单前要等待的秒数。

strTitle,可选项。将出现在弹出式窗口的标题上的文本。

natType,可选项。弹出式窗口中要显示的按钮和图标的类型。

本消息窗口的窗口标题由 strTitle 指定。如果忽略 strTitle,窗口的标题将是 "Windows 脚本宿主"。

如果提供了 natSecondsToWait,而且其值大于 0,消息窗口将在 natSecondsToWait 秒后被关闭。

natType 的含义与 Microsoft Win32(R)应用程序编程接口 MessageBox 函数相同。下表显示了各种值以及它们的含义。表中的值可以组合起来使用。

按钮类型

描述

0

显示 确定 按钮。

1

显示 确定 和 取消 按钮。

2

显示 终止、重试 和 忽略 按钮。

3

显示 是、否 和 取消 按钮。

4

显示 是 和 否 按钮。

5

显示 重试 和 取消 按钮。

描述

1

确定 按钮

2

取消 按钮

3

终止 按钮

4

重试 按钮

5

忽略 按钮

6

是 按钮

7

否 按钮

图标类型

描述

16

显示 "停止标识" 图标。

32

显示 "问号" 图标。

48

显示 "惊叹号" 图标。

64

显示 "信息标记" 图标。

返回值

前两个表并未覆盖 natType 的全部类型。完整的列表请参阅 Microsoft Win32 文档。

返回值 intButton 指出被用户单击的按钮的编号。如果用户在 natSecondsToWait 秒之前未单击按钮,intButton 将被设置为 -1。

示例下例生成了一个简单的弹出式窗口:

Set WshShell =CreateObject("WScript.Shell")
WshShell.Popup "今天你想去哪?"

6:RegDelete 方法,从注册表中删除 strName 指定的键或值。

object.RegDelete strName

object,WshShell 对象。

strName,要删除的键或值的名字。

如果 strName 以反斜线 (/) 结束,本方法将删除键,而不是值。strName 参数的开头必须为下列根键名之一:

缩写

完整模式

HKCU

HKEY_CURRENT_USER

HKLM

HKEY_LOCAL_MACHINE

HKCR

HKEY_CLASSES_ROOT

 

HKEY_USERS

 

HKEY_CURRENT_CONFIG

下例从注册表中删除了一个值和一个键:

Set WshShell =CreateObject("WScript.Shell")
WshShell.RegDelete "HKCU/ScriptEngine/Val" ' 删除值 "Val".
WshShell.RegDelete "HKCU/ScriptEngine/Key/"  ' 删除键 "Key".

7:RegRead 方法 返回名为 strName 的注册键或值。

object.RegRead(strName)

objectWshShell 对象。

strName要读取的键或值。

如果 strName 以反斜线 (/) 结束,本方法将返回键,而不是值。strName 参数的开头必须为下列根键名之一:

RegRead 方法只支持 REG_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY 以及 REG_MULTI_SZ 数据类型。如果注册表中有其他数据类型,RegRead 将返回 DISP_E_TYPEMISMATCH。

下例从注册表读取一个值和一个键:

Set WshShell = WScript.CreateObject("WScript.Shell")

WScript.Echo WshShell.RegRead("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/360Safetray")

将会返回d:/Program Files/Safe/360safe/safemon/360Tray.exe /start

8:RegWrite 方法设置 strName 指定的注册键或值。

object.RegWrite strName, anyVal [,strType]

object,WshShell 对象。

strName,要写的键或值的名称。

anyVal要写入键或注册表值中的值。

strType可选项。要保存到注册表中的值的数据类型。

如果 strName 以反斜线 (/) 结束,本方法将返回键,而不是值。strName 参数的开头必须为下列根键名之一:

RegWrite 支持将 strType 作为 REG_SZ、REG_EXPAND_SZ、REG_DWORD 以及 REG_BINARY。如果将其他类型作为 strType 传递进去,RegWrite 将返回 E_INVALIDARG。

当 strType 为 REG_SZ 或 REG_EXPAND_SZ 时,RegWrite 自动将 anyVal 转换成字符串。如果 strType 为 REG_DWORD,anyVal 被转换成一个整数。如果 strType 为 REG_BINARY,anyVal 必须为整数。

下例将一个值和键项写入注册表:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Regwrite "HKEY_CLASSES_ROOT/.txt/ShellNew/test",1,"REG_SZ"

注意regwrite不可执行危险操作,他对某些键值无效。REG_SZ一定要大写,否则无效。

9:Run 方法建立新的进程,执行 strCommand。

object.Run "程序+参数", [窗口模式], [tr为结束后才移交权利]

object,WshShell 对象。

strCommand,strCommand 参数中的环境变量将被自动展开。

intWindowStyle,可选项。设置正在运行的程序的窗口风格。

bWaitOnReturn,可选项。如果未指定 bWaitOnReturn 或其值为 FALSE,立即返回到脚本执行,而不是等待进程结束。

如果 bWaitOnReturn 被设置为 TR,Run 方法将返回应用程序返回的错误码。

如果未指定 bWaitOnReturn 或者为 FALSE,Run 方法将返回错误码 0。

下表列出了 intWindowStyle 的可用设置:

intWindowStyle

描述

0

隐藏该窗口,激活另一个窗口。

1

激活并显示一个窗口。如果窗口被最小化或最大化,系统会将其恢复为原来的大小和位置。在第一次显示窗口时,应用程序应该指定该标志。

2

激活窗口,并将其显示为最小化窗口。

3

激活窗口,并将其显示为最大化窗口。

4

将一个窗口按照上一次的大小和位置显示。活动窗口仍保持活动状态。

5

激活窗口,并以其当前的大小和位置显示。

6

将指定的窗口最小化,并激活 Z 顺序中的下一个顶级窗口。

7

将窗口显示为最小化窗口。活动的窗口仍将保持活动状态。

8

显示窗口当前状态。活动的窗口仍将保持活动状态。

9

激活并显示窗口。如果窗口为最小化或最大化的,系统将其恢复到原始的大小和位置。在恢复最小化窗口时应用程序应该指定该标志。

10

根据启动应用程序的程序的状态设置显示状态。

示例1:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "%windir%/notepad",1,tr

msgbox "ok!"

2:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "%windir%/notepad",1,false

msgbox "ok!"

10:SendKeys 方法模仿键盘事件,将一个或多个击键事件发送到活动窗口。

SendKeys string

string必选项。字符串表达式,指定要发送的击键。

每个键可用一个或多个字符表示。要指定单个键盘字符, 可使用字符本身。例如,要表示字母 A,可使用字符串 "A"。要表示多个字符,可依次将 其他字符添加到字符串中。例如,要表示字母 A、B 、 C,可使用字符串 "ABC"。

加号 (+)、脱字符 (^)、百分号 (%)、 波折号 (~) 以及括号 ( ) 对 SendKeys 具有特殊含义。要指定上述字符, 需使用大括号将其 ({}) 括起来。例如,如果要指定加号, 可使用 {+}。方括号 ([ ]) 对 SendKeys 没有特殊含义,但是也必须使用大括号。在其他应用程序中,方括号确实会有特殊的含义, 这对于需要进行动态数据交换 (DCE) 的情况是十分重要的。要 指定方括号字符,可使用 {{} 和 {}}。

要指定被按下时不显示的字符键,例如 ENTER 或 TAB,以及代表动作而不是字符的键,可使用以下代码:

SCROLL LOCK

{SCROLLLOCK}

F1

 

{F1}

BACKSPACE

{BACKSPACE}、{BS} 或 {BKSP}

F2

 

{F2}

BREAK

{BREAK}

F3

 

{F3}

CAPS LOCK

{CAPSLOCK}

F4

 

{F4}

DEL 或 DELETE

{DELETE} or {DEL}

F5

 

{F5}

下箭头

{DOWN}

F6

 

{F6}

END

{END}

F7

 

{F7}

ENTER

{ENTER}or ~

F8

 

{F8}

ESC

{ESC}

F9

 

{F9}

HELP

{HELP}

F10

 

{F10}

HOME

{HOME}

F11

 

{F11}

INS 或 INSERT

{INSERT} or {INS}

F12

 

{F12}

左箭头

{LEFT}

F13

 

{F13}

NUM LOCK

{NUMLOCK}

F14

 

{F14}

PAGE DOWN

{PGDN}

F15

 

{F15}

PAGE UP

{PGUP}

F16

 

{F16}

PRINT SCREEN

{PRTSC}

TAB

 

{TAB}

右箭头

{RIGHT}

上箭头

 

{UP}

如果希望指定 SHIFT、CTRL 和 ALT 的组合键, 需要在键代码的前面添加相应的下列代码:

>代码

SHIFT

+

CTRL

^

ALT

%

如果要指定在 SHIFT、CTRL 和 ALT 等键按下时的一些击键, 可以将这些键的代码放在括号中。例如,要指定在按下 SHIFT 键时按 E 和 C, 可使用 "+(EC)"。要指定在 SHIFT 被按下时按 E, 按 C 时不处于 SHIFT 状态,则可以使用 "+EC"。

要指定重复的键,可使用 {键 个数} 的形式。键和个数之间必须有一个空格。例如,{LEFT 42} 表示按左箭头键 42 次;{h 10} 表示按 H 10 次。

注意 如果应用程序不是为 Microsoft Windows 设计的,则不能够使用 SendKeys 对其发送击键。另外,Sendkeys 不能向任何应用程序发送 PRINT SCREEN 键 {PRTSC}。

示例

下例演示了如何在两个使用不同脚本语言(VBScript and JScript)的任务中使用同一个 .wsf 文件。这两个任务的功能相同,即启动Windows 计算器和发出键击来执行一些简单计算。

   set WshShell = WScript.CreateObject("WScript.Shell")
   WshShell.Run "calc"
   WScript.Sleep 100
   WshShell.AppActivate "Calculator"
   WScript.Sleep 100
   WshShell.SendKeys "1{+}"
   WScript.Sleep 500
   WshShell.SendKeys "2"
   WScript.Sleep 500
   WshShell.SendKeys "~"
   WScript.Sleep 500
   WshShell.SendKeys "*3"
   WScript.Sleep 500
   WshShell.SendKeys "~"
   WScript.Sleep 2500

1:Environment 属性返回 WshEnvironment 对象。

object.Environment ([strType]) object,WshShell 对象。strType,可选项。指定环境变量所在的位置。

如果提供了 strType,它将指定环境变量所在的位置, 可能的取值包括 "System"、"User"、"Volatile" 或 "Process"。 如果未提供 strType,则此方法将检索 Microsoft Windows 2000 的环境变量或者 Windows 95/98 的进程环境变量。 对于 Windows 95/98,strType 参数只支持 "Process"。

下表列出了 Windows 操作系统提供的某些变量。 脚本还可以获得由其他应用程序设置的环境变量。这些变量 无法通过 "Volatile" 类型获得。

 

 

 

Windows 2000

 

Windows 95/98

名称

描述

System

User

Process

Process

NUMBER_OF_PROCESSORS

计算机上运行的处理器的个数。

X

-

X

-

PROCESSOR_ARCHITECTURE

用户工作站的处理器类型。

X

-

X

-

PROCESSOR_IDENTIFIER

用户工作站的处理器 ID。

X

-

X

-

PROCESSOR_LEVEL

用户工作站的处理器级别。

X

-

X

-

PROCESSOR_VERSION

用户工作站的处理器版本。

X

-

X

-

OS

用户工作站上的操作系统。

X

-

X

-

COMSPEC

命令行的可执行文件(通常为 cmd.exe)。

X

-

X

X

HOMEDRIVE

第一本地驱动器(通常为 C 驱动器)。

-

-

X

-

HOMEPATH

用户的缺省目录(通常为 Windows 2000 中的 /users/default )。

-

-

X

-

PATH

PATH 环境变量。

X

X

X

X

PATHEXT

可执行文件的扩展名(通常为 .com、.exe、.bat 或 .cmd)。

X

-

X

-

PROMPT

命令行提示(通常为 $P$G)。

-

-

X

X

SYSTEMDRIVE

系统目录所在的本地驱动器(通常为 c:/)。

-

-

X

-

SYSTEMROOT

系统目录(例如,c:/winnt)。该变量与 WINDIR 相同。

-

-

X

-

WINDIR

系统目录(例如,c:/winnt)。该变量与 SYSTEMROOT 相同。

X

-

X

X

TEMP

用于存储临时文件的目录(例如,c:/temp)。

-

X

X

X

TMP

用于存储临时文件的目录(例如,c:/temp)。

-

X

X

X

下例检索了 NUMBER_OF_PROCESSORS 系统环境变量:

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")

 2:SpecialFolders 属性提供 WshSpecialFolders 对象,用于访问某些 Windows 外壳文件夹,例如桌面文件夹、开始菜单文件夹,以及个人文档文件夹等。

object.SpecialFolders(objWshSpecialFolders)

object,WshShell 对象。

objWshSpecialFolders,要返回的特殊文件夹的名称。

如果所请求的文件夹 (strFolderName) 不可用,返回 NULL。例如,Windows 95 没有 AllUsersDesktop文件夹,如果 strFolderName = AllUsersDesktop 返回的将是 NULL。

Windows 95 和 Microsoft Windows NT 4.0 操作系统中提供了下列特殊文件夹:

AllUsersDesktop ,AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop ,Favorites ,Fonts ,MyDocuments, NetHood ,PrintHood ,Programs ,Recent ,SendTo ,StartMenuStartup ,Templates

示例下例演示了如何在两个使用不同脚本语言(VBScript and JScript)的任务中使用同一个 .wsf 文件。这两个任务的功能相同——创建一个快捷方式,指向当前执行的脚本;一个 URL 快捷方式,指向 www.microsoft.com

   set WshShell = WScript.CreateObject("WScript.Shell")
   strDesktop = WshShell.SpecialFolders("Desktop")
   set oShellLink = WshShell.CreateShortcut(strDesktop & "/Shortcut Script.lnk")
   oShellLink.TargetPath = WScript.ScriptFullName
   oShellLink.WindowStyle = 1
   oShellLink.Hotkey = "CTRL+SHIFT+F"
   oShellLink.IconLocation = "notepad.exe, 0"
   oShellLink.Description = "Shortcut Script"
   oShellLink.WorkingDirectory = strDesktop
   oShellLink.Save
   set oUrlLink = WshShell.CreateShortcut(strDesktop & "/Microsoft Web Site.url")
   oUrlLink.TargetPath = "http://www.microsoft.com"
   oUrlLink.Save

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23610次
    • 积分:345
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:33篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论
    友情链接