转:获取脚本运行路径的VBS脚本

有一篇蛮不错的文章,收录如此,供参考!

-------------------------------------------------------------------------------------------------------------------------------

获取脚本运行路径的VBS脚本 
  
问:
您好,脚本专家!如何确定正在运行脚本的文件夹的路径?我喜欢让脚本自动打开正在运行此脚本的文件夹。

 

-- 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 方法,以传递我们刚刚构造的命令行字符串:

 

objShell.Run strPath

 

酷吧?现在,所有人对于明天的专栏都有个想法了吧?

(本文来源:互联网)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值