Windows脚本宿主(Windows Scripting Host或WSH)确实给我们编写本地脚本带来了方便,但是如何获取脚本文件自身目录或者是任意文件所在的目录路径呢?在Win32编程中我们可以通过PathRemoveFileSpec这样的Path*系列API,来对文件路径进行处理,当然这里是脚本,正常情况下没有访问Win32 API的权限,不过也有变通的办法来实现类似的功能。
下面我以获取脚本所在文件夹目录路径为例,讲解一下如何处理这类问题,WSH为我们提供了一个环境变量,名称为WScript.ScriptFullName或者写成WSH.ScriptFullName,通过直接输出变量,我们很容易得到脚本的全路径,当然这个是包含脚本名称的,类似于C:\ScriptsFolder\Sample.vbs这样的路径,如何得到C:\ScriptsFolder\呢?比如我们要向这个目录下写入配置文件,大家肯定会想到,我们去掉Sample.vbs不就可以了,是的,这是个办法,当然去掉的办法有很多,比如说基本的InStrRev函数,查找\斜杠,然后再Left截取字符串,这个思路就形成了我们第一个函数PathRemoveFileSpec1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Function PathRemoveFileSpec1(strFileName) ' 将类Unix路径 / 替换为 \ strFileName = Replace(strFileName, "/", "\") Dim iPos ' 从路径末尾开始搜索\,这样从第一个字符到这个位置 ' 就是我们所需要的 iPos = InStrRev(strFileName, "\") ' 使用Left保留需要的部分 PathRemoveFileSpec1 = Left(strFileName, iPos) End Function ' 测试输出 WScript.Echo PathRemoveFileSpec1(WScript.ScriptFullName) |