vba打开指定路径文件夹多个文件夹,VBS通过shell.Application获取的Windows.LocationURL路径,如何判断哪个是最后工作路径?

1 WSH 的概念WSH 是一个 Windows 管理工具。 WSH 创建了一个脚本运行的主环境,当脚本到达一台计算机时, WSH 扮演主人的角色。WSH 使脚本能够使用对象和服务,并提供脚本执行的准则。此外, WSH 还负责安全管理以及调用适当的脚本引擎。WSH 提供了一些非常便于使用的工具,可以访问散布在网络中,运行各种风格的 Windows 操作系统的机器,从而提供了网络管理的能力。这种访问大部分是通过活动目录服务接口(Active Directory Service Interface, ADSI)和 Windows 管理规范(Windows Management Instrumentation, WMI)实现的。 ADSI 提供了一套 COM接口,可以用于多种目录服务,如轻量级目录访问协议(Lightweight Directory Access Protocol, LDAP)、 Windows NT 目录服务,以及 Novell 的 Netware 和 NDS 服务。WMI 是 Microsoft基于 Web 的企业管理(Web-Based Enterprise Management, WBEM)的实现,这种标准的方法可以访问管理信息,如指定的客户端上安装的应用程序、系统内存,以及其他客户端信息。通过开发使用 ADSI 和 WMI 的 WSH 脚本,系统管理员可以开发脚本以便执行下面列出1.1 脚本文件类型独立的脚本文件有一些不同的格式,每种格式都有自己的扩展名1.2 使用 Windows 脚本宿主运行脚本WSH 提供了两个用于执行脚本的接口,一个用于命令行,一个用于 Windows 环境。这两个接口各使用不同的宿主程序作为 VBScript 引擎:cscript.exe:用于在命令行中运行脚本wscript.exe:用于在 Windows 环境中运行脚本之所以有两个宿主程序,是因为 cscript.exe 被设计为从控制台窗口启动(一般来说是 Windows 中的 MS-DOS 窗口),而 wscript.exe 则用于直接与 Windows GUI 进行交互。这两者就功能来讲几乎没有区别1.2.1 命令行执行执行脚本文件的命令行界面, cscript.exe 调用方法如下:打开Run 对话框(按下窗口键+R)或某个命令窗口。执行脚本如下:cscript c:\folderName\YourScriptName.vbs,如果直接在命令行中运行 cscript.exe 时不加参数,就只会得到使用帮助信息使用语法如下:cscript scriptname.extension [option...] [arguments...]cscript.exe 提供了中所列的命令行选项,可以用来控制各种WSH 环境设置。1.2.2 在 Windows 环境中执行 WSH执行脚本文件的Windows GUI界面是wscript.exe,它允许以下列几种方式执行文件:如果文件的类型注册为在 WSH 中执行,就可以直接在文件夹窗口或桌面上双击这些文件的图标来执行。如果使用 Run 命令对话框,那么就只要输入脚本的完整路径和名称即可。在 Run 命令对话框中,可以调用 wscript.exe。wscript c:\folderName\YourScriptName.vbs1.2.3 两种脚本区别当调试一个出错脚本时, cscript 和 wscript 之间的主要区别实际上变得更明显了。这是因为,相对于 wscript 可能产生的没完没了的弹出窗口来说,向一个控制台窗口发送错误消息显得更快更容易。在调试脚本时,推荐使用 cscript,而在打印调试输出结果时,最好使用 WScript 对象的 Echo 方法,因为调试时能产生大量的需要关注的错误信息。实际上,有时可能使调试者陷入循环,无法从错误消息中摆脱出来2 Windows 脚本宿主的内建对象每个编程环境都提供了自己的对象模型,开发人员可以使用这些对象模型实现各种解决方案, WSH 也不例外。 WSH 包含了一组核心对象,分别包含了属性和方法,可以用于访问网络中的其他计算机、导入外部的可脚本化对象以供应用程序使用,或者连接到 Windows或 Windows Shell2.1 WScript 对象WSH 对象模型的基础就是 WScript 对象。这个对象提供了使开发人员能够访问各种信息的属性和方法,如:将要执行的脚本的名称和路径信息Microsoft 脚本引擎的版本与外部对象的链接与用户的交互延迟或中断脚本执行的能力2.1.1 WScript 的属性2.1.1.1 ArgumentArgument属性包含了 WshArguments对象(一个参数集合)。从该集合中获取单个参数时,使用由 0开始的索引。2.1.1.2 FullNameFullName 属性是一个只读的字符串,它代表宿主可执行文件(cscript.exe 或 wscript.exe)的有效完整路径。WScript.Echo WScript.FullName
2.1.1.3 InteractiveInteractive 属性设置脚本的模式,或识别脚本的模式。使用该属性会返回一个布尔值。有两种可用的模式:批处理模式和交互模式。在交互模式下(默认情况),脚本可以与用户进行交互。可以向 WSH 输入信息, WSH 也可以输出信息,信息被显示在对话框中,等待用户提供反馈。在批处理模式中,不支持用户交互,不支持 WSH 的输入和输出。可以使用 WSH 命令行开关脚本模式//I(交互模式)和//B(批处理模式)来设置脚本模式。2.1.1.4 NameName 属性返回 WScript 对象(宿主可执行文件)的名称,它是一个只读的字符串。下面的代码使用了 Name 属性:WScript.Echo WScript.Name2.1.1.5 PathPath 属性返回包含宿主可执行文件(cscript.exe 或 wscript.exe)的目录名。该属性返回一个只读的字符串。下面的 VBScript 代码将显示可执行文件所在的目录名:WScript.Echo WScript.Path2.1.1.6 ScriptFullNameScriptFullName 属性返回当前正在运行的脚本的完整路径。该属性返回一个只读的字符串。2.1.1.7 ScriptNameScriptName 属性返回当前正在运行的脚本的文件名。该属性返回一个只读的字符串。下面的代码显示了正在运行的脚本的名称,:WScript.Echo WScript.ScriptName2.1.1.8 StdErrStdErr 属性开放当前脚本的只写的错误输出流。 该属性返回一个标识标准错误流的对象。只有使用 cscript.exe 时才能访问 StdIn、 StdOut 和 StdErr 流。使用 wscript.exe 时如果想访问这些流就会产生一个错误。2.1.1.9 StdInStdIn 属性开放当前脚本的只读的输入流。该属性返回一个标识标准错误流的对象。只有使用 cscript.exe 时才能访问 StdIn、 StdOut 和 StdErr 流。使用 wscript.exe 时如果想访问这些流就会产生一个错误。2.1.1.10 StdOutStdOut 属性开放当前脚本的只写的错误输出流。该属性返回一个标识标准错误流的对象。只有使用 cscript.exe 时才能访问 StdIn、 StdOut 和 StdErr 流。使用 wscript.exe 时如果想访问这些流就会产生一个错误。2.1.2 WScript 的方法2.1.2.1 CreateObjectWScript 对象的这个方法用于创建一个 COM 对象object.CreateObject(strProgID[,strPrefix])object: WScript 对象。strProgID:值为字符串,表示想要创建的对象的程序标识符(ProgID)。strPrefix:可选。值为字符串,表示函数前缀。使用 CreateObject 方法和 strPrefix 参数创建的对象是已连接对象。对象被创建后,其输出接口与脚本文件相连接。每个事件函数都由这个前缀加上事件的名称来命名。如果创建对象时没有使用 strPrefix 参数,也可以使用 ConnectObject 方法同步对象的事件。只要对象产生一个事件, WSH 就会调用一个子程序,其名称是 strPrefix 加上事件的名称Set WshNetwork = WScript.CreateObject("WScript.Network")
2.1.2.2 ConnectObject该方法将对象的事件源连接到具有给定前缀的函数object.ConnectObject(strObject, strPrefix)object: WScript 对象。strObject:必需的。表示想要连接的对象名称的字符串。strPrefix:必需的。表示函数前缀的字符串。同步一个对象的事件时,已连接对象是很有用的。对象被创建后, ConnectObject 方法将对象的输出接口连接到脚本文件。事件函数的名称就是这个前缀加上事件的名称。WScript.ConnectObject RemoteScript, "remote_"2.1.2.3 DisconnectObject该方法用于断开已连接对象的事件源的连接。object.DisconnectObject(obj)object: WScript 对象。obj:表示想要断开连接的对象名称的字符串。断开一个对象的连接意味着 WSH 无法再响应它的事件。但是,有一点很重要,那就是断开连接后对象仍然能够产生事件。还要注意的是,如果指定的对象尚未连接, DisconnectObject 方法就不会做任何事。2.1.2.4 Echo该方法输出一个消息框或一个命令控制台窗口。object.Echo [Arg1] [,Arg2] [,Arg3] ...object: WScript 对象。Arg1、 Arg2、 Arg3、 ……:可选。表示要显示项目的列表。根据当前使用的 WSH 引擎的不同, Echo 方法输出的类型也有所变化2.1.2.5 GetObjectGetObject 方法根据指定的 ProgID 获取某个已存在对象,或从文件创建一个新的对象。object.GetObject(strPathname [,strProgID], [strPrefix])object: WScript 对象。strPathname:包含将对象保存到磁盘的文件所使用的完整的有效路径名。strProgID:可选。值为字符串,表示想要创建的对象的程序标识符(ProgID)。strPrefix:可选。进行对象事件同步时有用。如果提供了 strPrefix 参数, WSH就会在创建对象之后将对象的输出接口连接到脚本文件。如果内存中存在对象的一个实例,或者想从文件创建一个对象,都需要使用 GetObject方法。GetObject 方法适用于所有 COM 类,与创建对象使用的脚本语言无关。如果内存不存在对象的实例,也不想从文件创建对象,就可以使用 CreateObject 方法。Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SCHEMA.DRW")
MyApp = MyObject.Application
2.1.2.6 Quit该方法强制脚本在任意时刻立即停止执行。object.Quit([intErrorCode])object: WScript 对象。intErrorCode:可选。返回一个整数值,作为进程的返回码。如果忽略 intErrorCode 参数,就不会有返回值。Quit 方法可以用于返回一个可选的错误代码。如果 Quit 方法是脚本中的最后一条命令(并且不需要返回一个非零值),就可以不使用任何参数,这样脚本就会正常退出。2.1.2.7 Sleep该方法将脚本的执行挂起一段时间,然后接着执行。object.Sleep(intTime)object: WScript 对象。intTime:这是一个整数值,表示希望脚本进程保持非活跃状态的时间间隔(以毫秒为单位)。使用这个方法时,运行脚本的线程被挂起,占用的 CPU 被释放。当间隔时间到,就会继续恢复执行。要想被事件所触发,脚本必须持续活跃,因为已经结束执行的脚本是肯定不能检测到任何事件的。脚本所处理的事件在脚本休眠时仍然会被执行。2.2 WshArguments 对象2.2.1 访问 WshArgument 对象它是通过使用WScript.Arguments 属性来实现的。Set objArgs = WScript.Arguments2.2.2 WshArgument 对象的属性WshArgument 对象是一个由 WScript 对象的 Arguments 属性返回的集合(WScript.Arguments)。访问命令行参数集合有下列三种方法:使用 WshArguments 对象访问整个参数集合。使用 WshNamed 对象访问有名字的参数。使用 WshUnnamed 对象访问没有名字的参数2.3 WshShell 对象2.3.1 访问 WshShell 对象要使用下面这一节中将要列出的属性,程序员必须创建一个 WScript.Shell 对象的实例。这样以后对 WshShell 对象的引用实际就是对新创建实例的引用。Set WshShell= WScript.CreateObject( "WScript.Shell" )2.3.2 WshShell 对象的属性WshShell 对象有三个属性:CurrentDirectoryEnvironmentSpecialFolders2.3.2.1 CurrentDirectory该属性获取或更改当前活动目录object.CurrentDirectoryobject: WshShell 对象。CurrentDirectory 属性返回一个字符串,其中包含当前活跃进程的当前工作目录的完整有效路径名。2.3.2.2 Environment该属性返回 WshEnvironment 对象(一个环境变量集合)。object.Environment ([strType])object: WshShell 对象。strType: 可选。指定环境变量的位置。Environment 属性包含 WshEnvironment 对象(一个环境变量集合)。如果指定了 strType,就指定了环境变量所在的级别的值:System, User, Volatile, Process如果没有指定 strType, Environment 属性就会根据不同的操作系统返回不同的环境变量类型,如下图2.3.2.3 SpeciolFolders该属性返回一个 SpecialFolders 对象(一个特殊文件夹集合)。object.SpecialFolders(objWshSpecialFolders)object: WshShell 对象。onjWshSpecialFolders:特殊文件夹的名称。WshSpecialFolders 对象是一个集合,它包含所有的 Windows 特殊文件夹,其中包括 Desktop 文件夹、 Start Menu 文件夹和Documents/My Documents 文件夹,特殊文件夹的名称用于索引集合以获取想要的具体文件夹。如果被请求的文件夹(strFolderName)不可用, SpecialFolder 属性将返回一个空字符串。下面是可用的特殊文件夹:AllUsersDesktopAllUsersStartMenuAllUsersProgramsAllUsersStartupDesktopFavoritesFontsMyDocumentsNetHoodPrintHoodProgramsRecentSendToStartMenuStartupTemplates2.3.3 WshShell 对象的方法2.3.3.1 AppActivate这个方法可以用于激活一个指定的已经打开的应用程序窗口。object.AppActivate title object: WshShell 对象。
title:指定要激活的应用程序。这可以是一个包含应用程序标题的字符串(就像出现在标题栏中的那样)或应用程序的进程 ID。
`AppActivate `方法返回一个 Boolean 类型的值,标志着过程调用是否成功。这个方法用于将焦点切换至指定名称的应用程序或窗口。
方法的调用不影响应用程序的最大化或最小化状态。当进行了切换焦点(或关闭窗口)的动作之后,焦点就会从已经获得焦点的应用程序上移走。为了确定要激活的应用程序,指定的标题名称会与每个正在运行的应用程序的标题字符串做比较。如果没有准确的匹配,那么具有以 title 所指定的值开始的标题字符串的应用程序就会被激活。如果还是没有能找到合适的应用程序,那么具有以 title 所指定的值结束的标题字符串的应用程序就会被激活。如果存在多个名为 title 所指定的值的应用程序实例,就会任意激活其中的一个。但是,无法控制具体选择哪一个2.3.3.2 CreateShortcut该方法可以用于创建一个新的快捷方式,或打开一个已有的快捷方式。object.CreateShortcut(strPathname)object: WshShell 对象。strPathname:一个表示要创建的快捷方式的路径名。CreateShortcut 方法返回一个 WshShortcut 对象或一个 WshURLShortcut 对象。调用 CreateShortcut 方法不会导致快捷方式的真正创建,而是将快捷方式对象以及对其所做的修改保存在内存中,直到使用 Save 方法将其保存至磁盘。要真正创建一个快捷方式,必须完成下列三个步骤:创建 WshShortcut 对象的一个实例。初始化其属性。使用 Save 方法将其保存到磁盘。容易出问题的是将参数放到快捷方式对象的 TargetPath 属性中,这通常是无用的。快捷方式的所有参数都必须放在 Arguments 属性中2.3.3.3 ExpandEnvironmentStrings该方法返回环境变量的扩充值。object.ExpandEnvironmentStrings(strString)object: WshShell 对象。strString:一个字符串值,表示想要扩充的环境变量的名称。这个方法只对 PROCESS 环境空间内定义的环境变量进行扩充。环境变量的名称必须以“%”包围,并且是大小写不敏感的。2.3.3.4 LogEventLogEvent 方法向日志文件中添加一个事件条目。object.LogEvent(intType, strMessage [,strTarget])object: WshShell 对象。intType:表示事件类型的整数值。strMessage:包含日志条目文本的字符串值。strTarget:可选。一个字符串值,表示事件日志所存储的计算机系统名称(默认的是本地计算机系统)。有 6 种事件类型2.3.3.5 Popup该方法用于在弹出式消息框中显示文本。intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])object: WshShell 对象。strText:一个字符串值,包含了想要显示在弹出式消息框中的文本。nSecondsToWait:可选。一个数值,表示想要弹出式消息框显示的最长时间(以秒为单位)。如果 nSecondToWait 等于 0(默认值),弹出式消息框就一直可见,直到被关闭。如果 nSecondToWait 大于 0, 那么弹出式消息框就在 nSecondToWait 秒后关闭。strTitle:可选。一个字符串值,包含了想要出现在弹出式消息框标题栏中的文本。如果没有提供 strTitle 这个参数,弹出式消息框的标题就会被设置为默认的字符串―Windows Script Host‖。nType:可选。一个数值,表示想在弹出式消息框中出现的按钮和图标的类型。这些决定了消息框的使用场合和用途。 nType 的功能与 Microsoft Win32 应用程序编程接口中的 MessageBox 函数相同。下面的表格显示了各种值和它们的含义。可以合并列表中不同的值获得各种不同的结果。IntButton:一个整数值,表示关闭消息框时单击的按钮的序号,这个值是由 Popup 方法返回的。按钮类型:图标类型:关闭消息框时所单击的按钮的编号:2.3.3.6 RegDelete该方法从注册表中删除一个键或其键值。object.RegDelete(strName)object: WshShell 对象。strName:一个字符串值,表示要删除的注册表键或键值的名称。如果 strName 以反斜杠结尾,就可以指定键名,如果不使用反斜杠,就可以指定键值名。完整的有效键名和键值名是以一个根键的名称作为前缀的。使用 RegDelete 方法时,也可以使用根键名的缩写形式。5 种可能使用的根键:2.3.3.7 RegRead该方法返回注册表中一个键或键值的名称。object.RegRead(strName)object: WshShell 对象。strName:一个字符串值,表示想获得的键或键值的名称。RegRead 方法返回的值有 5 种类型2.3.3.8 RegWrtie该方法可以创建一个新键,给现有键添加另一个键值名(并指定一个值),或修改现有键值名的值。object.RegWrite(strName, anyValue [,strType])object: WshShell 对象。strName:一个字符串值,表示想创建、添加或修改的键名、键值名或键值。anyValue:想要创建的新键的名称,或想添加到现有键的键值名,或想指定给某个现有键值名的新键值。strType:可选。一个表示键值数据类型的字符串。如果 strName 以反斜杠结尾,就可以指定键名,如果不使用反斜杠,就可以指定键值名。RegWrite 方法自动将参数 anyValue 转换成一个字符串或一个整数,而由 strType 的值决定其数据类型(是字符串还是整数)。strType 方法的可用选项:2.3.3.9 RunRun 方法在一个新进程中运行一个程序。object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])object: WshShell 对象。strCommand:一个字符串,表示想要运行的命令行,必须包含所有要传递给可执行文件的参数。intWindowStyle:可选。一个整数值,表示程序窗口的外观。并不是所有的程序都使用这一信息。bWaitOnReturn:可选。一个 Boolean 值,表示脚本在其下一条语句之前是否需要等待程序结束。如果设置为 True,脚本一直停止执行直到程序结束, Run 返回任一个由程序返回的错误代码。如果设置为 False(默认),程序启动后, Run 方法立即返回 0(这不是错误代码)。Run 方法返回一个整数。该方法使用一个新的 Windows 进程启动运行一个程序。可以让脚本等待程序运行完毕再继续执行,这样就可以是脚本和程序同步执行。如果将某个文件类型成功注册到某一个特定程序,那么对该文件调用 Run 方法就会启动注册的程序。例如,对一个*.txt 文件调用 Run 方法,就会启动记事本程序并将文本文件加载到其中。列出了 intWindowStyle 的可用值2.3.3.10 SendKeysSendkeys 方法向活跃窗口发送一次或多次击键(仿佛来自键盘)。object.SendKeys(string)object: WshShell 对象。string:一个字符串值,表示想要发送的击键。使用 SendKeys 方法可以向没有内建的自动化接口的应用程序发送击键。多数键盘字符可由单个击键表示,但有些键盘字符是由击键的组合构成的(例如 Alt+F4)。要发送一个单独的键盘字符,只要将该字符本身作为字符串参数发送即可。要发送字母“v”。要发送一个空格,可以发送“ ”。SendKeys 方法使用某些字符作为其他字符的限定符。这些特殊的字符包括圆括弧、尖括弧、花括弧,要发送这些字符,可以将它们包含在一对花括弧{}中间。所以如果要发送加号,可以发送字符串参数{+}要发送方括弧字符,可以使用字符串数组{[}发送左括弧,使用字符串数组{]}发送右括弧。某些击键不产生任何字符(如 Enter 和 Tab),某些击键代表一些动作(如 Backspace 和 Break)。要发送这些击键,要发送常规字符与Shift、 Ctrl 或 Alt键的组合,就需要创建一个复合的字符串参数以表示这种击键组合当用做这种用途时,这些特殊字符不需要被包含在花括弧中。要表示按下其他某些键的同时,必须按下Shift、 Ctrl 或 Alt键的情况,可以修改圆括弧中包含的击键序列创建一个复合的字符串参数。例如下面这些击键以及相应的操作: 按下 Shift 的同时按下 V 和 B,发送字符串参数+(VB)。
按下 Shift 的同时按下 V,然后长按 B(不要按下 Shift),发送字符串参数+VB。
可以使用 `SendKeys` 方法发送一个单独的击键被按下若干次所构成的击键模式。可以创建一个复合的字符串参数,指定想要重复的击键,后面再跟上想要重复的次数。使用的复合字符串参数形如`{击键 次数}`。例如,要发送`“V”被按下 10 次`的击键模式,可以发送字符串
参数"{V 10}”。单个击键被按下若干次的模式是唯一的一种能够发送的击键模式。例如,可以发送 10次“V”,但不能发送 10 次“Ctrl+V”。注意,不能向应用程序发送 Print Screen 键{PRTSC}2.3.3.11 ExecExec 方法在一个子命令解释器中运行一个应用程序,子命令解释器提供对 StdIn、 StdOut 和 StdErr 流的访问。object.Exec(strCommand)object: WshShell 对象。strCommand:一个字符串值,表示用于运行脚本的命令行。Exec 方法返回一个 WshScriptExec 对象,该对象提供使用 Exec 运行的脚本的状态和错误信息,也提供对 StdIn、 StdOut 和 StdErr 通道的访问。 Exec 方法只能执行命令行应用程序,并且不能用于运行远程脚本2.4 WshNetwork 对象 WshNetwork 对象提供对计算机所连接的网络上共享资源的访问。如果想连接到网络共享或网络打印机,从网络共享或网络打印机断开连接,映射或删除网络共享,或访问网络上某一用户的信息,都需要创建一个 WshNetwork 对象。
2.4.1 访问 WshNetwork 对象该对象的访问是通过创建 WScript.Network 对象的实例实现的。Set WshNetwork = WScript.CreateObject("WScript.Network")2.4.2 WshNetwork 对象的属性2.4.2.1 ComputerNameComputerName 属性返回计算机系统的名称。object.ComputerNameobject: WshNetwork 对象。ComputerName 属性包含一个字符串值,表示计算机系统的名称2.4.2.2 UserDomainUserDomain 属性返回用户的域名。object.UserDomainobject: WshNetwork 对象。UserDomain 属性返回用户的域名2.4.2.3 UserNameUserName 属性返回某个用户的名称。object.UserNameobject: WshNetwork 对象。UserName 属性以字符串返回一个用户的名称

  -- PD  答:  您好,PD。您知道,对于脚本专家,此问题(同我们所收到的许多问题一样)被我们归到了“为什么我们没有想到”类别之下。脚本专家将花费大量的时间测试脚本,包括由 Windows 脚本编写社区成员所提交的脚本。(嗯,将会有一位脚本专家花费大量时间测试众多脚本。请注意,即使他必须做这里几乎所有的工作,他也不会抱怨。[编者注:包括大多数抱怨。])其中的许多脚本将向某个文件夹添加文件或从该文件夹删除文件,或者将信息写入该文件夹中的日志文件(该脚本本身就在该文件夹中)。这意味着我们经常需要使用 Windows 资源管理器打开脚本的主文件夹。我们如何打开该文件夹呢?嗯,双击我的电脑、双击 C:、双击 Scripts 等等。我们从来没有想过使用脚本来为我们打开文件夹。
  Set objShell = CreateObject("Wscript.Shell")
  strPath = Wscript.ScriptFullName
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.GetFile(strPath)
  strFolder = objFSO.GetParentFolderName(objFile)
  strPath = "explorer.exe /e," & strFolder
  objShell.Run strPath
  正如您所看到的,这个脚本不是特别复杂。首先创建一个 Wscript.Shell 对象的实例;稍后会使用这个对象启动 Windows 资源管理器。然后使用下面这行代码获取运行脚本的完整路径(例如 C:\Scripts\My_script.vbs):
  strPath = Wscript.ScriptFullName
  进行下一步之前,要马上澄清一下。有些人可能想知道我们为什么不使用 CurrentDirectory 属性来确定脚本的当前目录。本来可以,但有一个问题:脚本的当前目录与其运行时所在的文件夹不一定相同。毕竟,您可以轻松地启动 C:\Scripts 中的一个脚本,然后将当前目录更改为 C:\Test。对于此专栏,我们需要脚本所驻留的文件夹的名称。如果您更愿意获取当前目录,则请使用下面的这个脚本:
  Set objShell = CreateObject("Wscript.Shell")
  strPath = objShell.CurrentDirectory
  strPath = "explorer.exe /e," & strPath
  objShell.Run strPath
  现在,回到我们的原始脚本。将脚本的完整路径存储到变量 strPath 中之后,我们会创建 Scripting.FileSystemObject 的实例。接下来我们将使用以下两行代码:
  Set objFile = objFSO.GetFile(strPath)
  strFolder = objFSO.GetParentFolderName(objFile)
  此时,我们已拥有此脚本文件本身的路径:C:\Scripts\My_script.vbs。很好,但我们真正需要的是去掉文件名而仅保留文件夹路径:C:\Scripts。尽管有几种不同的方法可以达到此目的,但是我们认为下面的方法最为简单。此时我们所要做的是使用 GetFile 方法绑定到文件 C:\Scripts\My_script.vbs(请注意我们是如何将变量 strPath 作为单独的参数传递给 GetFile 的)。连接到该文件之后,我们便可以使用 GetParentFolderName 方法获取文件所驻留的文件夹的完整路径;不用说,它恰好是 C:\Scripts。这也恰好是我们想要打开的那个文件夹。
  剩下的就很容易了。在将脚本文件夹路径安全地放到变量 strPath 中之后,我们便可使用下面这行代码来构造一个命令行字符串,该字符串将打开 Windows 资源管理器窗口(该窗口的焦点设置为 C:\Scripts):
  strPath = "explorer.exe /e," & strPath  现在,剩余的全部工作就是调用 Run 方法,以传递我们刚刚构造的命令行字符串:
本回答由提问者推荐已赞过已踩过你对这个回答的评价是?评论
收起由于众所周知的原因,weebly.com是无法稳定的访问的。有的时候虽然可以打开,但是会显示不全;有的时候干脆就彻底打不开。而基于weebly.com做的网站,处境也和weebly.com是差不多的。存在诸多不确定性。如果您的访客主要是歪果...
点击进入详情页本回答由起飞页提供推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询为你推荐:
下载百度知道APP,抢鲜体验使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。扫描二维码下载

我要回帖

更多关于 vba打开指定路径文件夹 的文章

 

随机推荐