这几天用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脚本的情况下获取到的当前目录的确是E:\VBS
在Win+R的运行窗口运行看看
这个时候得到的结果也是E:\VBS
CMD命令行
当我们在CMD命令行下运行VBS脚本的时候、就出现了不一样的情况了;
返回的结果居然是C:\Users\Administrator
;可以看到这个路径和我打开的CMD命令行窗口的当前工作目录是一样的;
而我们希望得到的是test.vbs
的目录
接下来我们看一下GetFile()的实际效果
当我们直接运行VBS脚本的情况下获取到的当前目录的确是E:\VBS
在Win+R的运行窗口运行看看
这个时候得到的结果也是E:\VBS
CMD命令行
这个时候得到的结果还是E:\VBS