VBS脚本获取工作目录的2种方式

这几天用VBS写了一些自动化的脚本、脚本里面有需要调用一些当前目录下的文件;
由于不想写绝对路径(E:\VBS\test.vbs)、希望在VBS脚本里面写成(“test.vbs”)这种方式;而且这样写的好处很明显、你可以把你的文件随便存放、而不需要修改你的VBS脚本。

问题很大

但是当VBS脚本写完之后在测试的过程中、发现当我在CMD命令行模式下运行VBS脚本的时候就会找不到文件路径;
所以我准备在VBS代码里面把当前的工作目录切换到实际的VBS脚本目录下;

在翻看VBS文档的过程中发现有2种方法获取当前文件目录;

GetFolder()和GetFile()都可以获取到当前目录

这2种获取当前文件目录的差距还有那么一点点的大;

VBS获取当前目录

GetFolder()代码如下

Set Ws = CreateObject("Scripting.FileSystemObject")
'获取当前脚本路径   
currentpath = Ws.GetFolder(".").Path
msgbox currentpath

GetFile()代码如下

Set Ws = CreateObject("Scripting.FileSystemObject")
'获取当前脚本路径
currentpath = Ws.GetFile(Wscript.ScriptFullName).ParentFolder.Path
msgbox currentpath

我们的脚本路径是E:\VBS\test.vbs,那么获取到的工作目录应该是E:\VBS;写完代码我们来运行看一下效果;

一般情况下运行VBS或者BAT脚本的方式无非就是双击直接运行、在Win+R窗口运行、或者是在CMD命令行中运行;
接下来我们就3种模式下测试一下2种获取目录的方式有什么不一样

我们先看看GetFolder()的具体效果

先直接双击运行vbs脚本

直接运行vbs脚本

当我们直接运行VBS脚本的情况下获取到的当前目录的确是E:\VBS

在Win+R的运行窗口运行看看

Win+R窗口运行vbs脚本

这个时候得到的结果也是E:\VBS

CMD命令行

CMD命令行运行vbs脚本

当我们在CMD命令行下运行VBS脚本的时候、就出现了不一样的情况了;
返回的结果居然是C:\Users\Administrator;可以看到这个路径和我打开的CMD命令行窗口的当前工作目录是一样的;
而我们希望得到的是test.vbs的目录

接下来我们看一下GetFile()的实际效果

直接运行vbs脚本

当我们直接运行VBS脚本的情况下获取到的当前目录的确是E:\VBS

在Win+R的运行窗口运行看看

Win+R窗口运行vbs脚本
这个时候得到的结果也是E:\VBS

CMD命令行

CMD命令行运行vbs脚本
这个时候得到的结果还是E:\VBS

参考文章