忽略对只读属性(别名,压缩或目录)所作的改变. 当设置属性时,应首先阅读当前属性,然后按要求改变个别属性,最后反写属性.
例子: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