用vbs实现在启动 Windows 资源管理器时打开特定文件夹

所属分类: 脚本专栏 / vbs 阅读数: 907
收藏 0 赞 0 分享

实现方法如下

my-script.vbs "c:\scripts"

在文件夹路径的两端必须加双引号吗?本例中不需要。但是,如果路径中有空格,则必须加双引号。以下命令行将不起作用:

my-script.vbs c:\documents and settings\kmyer

只要是向脚本传递包含空格的参数,就必须将整个参数括在双引号内(否则无需如此)。换句话说:

my-script.vbs "c:\documents and settings\kmyer"

这就是命令解释程序的工作方式。

那么,我们将在这里运行什么脚本呢?问得好。最终是这样一个脚本:

Set objShell = CreateObject("Wscript.Shell") 
strPath = Wscript.Arguments(0) 
strPath = "explorer.exe /e," & strPath 
objShell.Run strPath 

如同往常一样,该脚本没有太多内容。我们首先创建 Wscript.Shell 对象的实例;它是 Windows Script Host 对象,我们用它来在另一脚本内运行脚本或可执行文件。然后我们获取提供给脚本的第一个参数 (c:\scripts) 并将其存储到名为 strPath 的变量中:

strPath = Wscript.Arguments(0)

对这些应该没有什么疑问吧?稍后,我们将使用 Run 方法启动 Windows 资源管理器。不过,在此之前,我们应注意到 WSH 中的 Run 方法同 Run 对话框基本上是一回事。如果想使用 Run 对话框启动 Windows 资源管理器(焦点定位在 C:\Scripts 文件夹上),需要键入以下代码:
explorer.exe /e,c:\scripts
我们发现,以上使用的语法与我们用 Run 方法启动 Windows 资源管理器所用的语法相同:我们只需要构建命令,然后执行: 

strPath = "explorer.exe /e," & strPath
objShell.Run strPath

在第 1 行,我们采取命令 explorer.exe /e, 并附加上文件夹路径(该路径存储在变量 strPath 中);然后,strPath 的值将是 explorer.exe /e,c:\scripts。在第 2 行,我们调用 Run 方法,并将变量 strPath 作为所要运行的命令传递。如果一切顺利(就脚本编写方面,事情总是很顺利,对吧?),Windows 资源管理器将会打开且焦点定位在 C:\Scripts 上:

真酷。
那么,这有何不妥吗?没什么,一切正常。该脚本的唯一弊端是需要您键入文件夹的完整路径;当您试图打开文件夹 C:\Documents and Settings\Default User\Application Data\Microsoft\SystemCertificates\My\Certificates 时,这就会成为一个问题。但是由于系统管理员总是坚持使用命令行,我们又必须做何种选择呢?
好吧,您总是可以尝试一下 GUI 方法(不用担心,我们不会告诉任何人的):

Const WINDOW_HANDLE = 0 
Const NO_OPTIONS = 0 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.BrowseForFolder _ 
  (WINDOW_HANDLE, "Select a folder:", NO_OPTIONS)     
Set objFolderItem = objFolder.Self 
strPath = objFolderItem.Path 
objShell.Explore strPath 

本脚本根本不需要您做任何键入。您只需启动该脚本,然后它会显示浏览文件夹对话框:

选择文件夹,单击确定,这样就可以了。

那么,此脚本是如何工作的?好吧,我们先定义一对常量:WINDOW_HANDLE 和 NO_OPTIONS。WINDOW_HANDLE 是 BrowseForFolder 方法所需的常量,NO_OPTIONS 则只是通知脚本我们要显示标准的“浏览文件夹”对话框。之后,我们创建 Shell.Application 对象的实例,然后使用下面这行代码来显示该对话框:

Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Select a folder:", NO_OPTIONS)

在对话框显示之后,它将一直等到我们选择一个文件夹并单击确定。然后我们使用如下两行代码来实现:1) 创建对选定文件夹的对象引用;以及,2) 将文件夹路径存储到变量 strPath 中:

Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path

我们现在只需调用专用于打开 Windows 资源管理器的 Explore 方法。通过将变量 strPath 作为单独的参数传递,这样会使得 Windows 资源浏览器在打开时焦点定位在 C:\Scripts 上:

objShell.Explore strPath

这说明了什么呢?这说明现在您可以使用命令提示符打开 Windows 资源管理器,也可以使用 GUI 打开 Windows 资源管理器,这完全取决于您。

更多精彩内容其他人还在看

vbscript禁用 启用fso的方法

启用:regsvr32 scrrun.dll 禁用:regsvr32 /u scrrun.dll
收藏 0 赞 0 分享

getSQLinfo.vbs 获得SQL数据/日志空间使用情况的脚本

这个脚本可以获取SQL数据/日志的空间使用情况方便及时了解sql使用空间情况
收藏 0 赞 0 分享

高手必看的vbs的至尊境界

vbs高手总结出来的,看来我们真忽略了他的真正强大的地方
收藏 0 赞 0 分享

vbs 获取radmin注册表中的信息

用这个脚本真的很方便,轻松的获取radmin注册表中的信息 ,想想以前我们都是用cmd下导出注册表信息
收藏 0 赞 0 分享

vbs解答一道初中数学题i,x,y

vbs解答 一道初中数学题 i+100=x^2 i+168=y^2 求 i,x,y
收藏 0 赞 0 分享

vbs之自动安装驱动程序

目前各类万能驱动程序包在网络上屡见发布,在使用这些程序包的同时,我们不仅会问:为什么这些程序包中的驱动程序可以在安装新硬件之后自动安装呢?
收藏 0 赞 0 分享

vbs Windows系统改变或修改网卡的MAC地址的脚本与软件

这个文件比程序本身还大,感觉不爽,于是本人的VBS版MAC修改代码便诞生了,在使用过程中如果出现不能上网的情况得返回一下网卡驱动(有些机器比较特别)
收藏 0 赞 0 分享

让IIS建立的站点默认是.net 2.0的,而不是.net 1.1的代码

让IIS建立的站点默认是.net 2.0的,而不是.net 1.1的,没有使用WMI,所以在操作前先得停止IIS相关服务
收藏 0 赞 0 分享

VBS利用SendKeys输入中文字符的方法

Author:Trajon.BWL今天在网上随便闲逛,逛到一个帖子,这位迷茫的朋友想知道该怎么使用SendKeys的vbs方法来输入中文字符
收藏 0 赞 0 分享

vbs加administrator用户的代码

使用ADSI的Winnt对象,Windows2000后面的系统都属于NT系列
收藏 0 赞 0 分享
查看更多