VBScript - 参考自编程序

时间:2014-04-17 14:38:41

标签: vbscript

有没有办法引用在VBScript中运行的当前文件?我可以使用文件的名称,但它需要可操作,尽管目录更改和重命名。这样做的目的是在文件I / O操作中使用该文件。如果不可能,是否有任何可能的替代方案,例如使文件不可重命名或不可移动?

4 个答案:

答案 0 :(得分:8)

WScript.ScriptFullName为您提供运行脚本的完整路径。如果您愿意,可以使用FileSystemObject进一步解析此路径。例如:

' Assuming the script is at c:\scripts\test.vbs
strFile = WScript.ScriptFullName

With CreateObject("Scripting.FileSystemObject")
    MsgBox .GetDriveName(strFile)           ' => c:
    MsgBox .GetParentFolderName(strFile)    ' => c:\scripts
    MsgBox .GetFileName(strFile)            ' => test.vbs
    MsgBox .GetBaseName(strFile)            ' => test
    MsgBox .GetExtensionName(strFile)       ' => vbs    
End With

答案 1 :(得分:1)

您可以使用WScript.ScriptFullName在运行时访问正在运行的脚本的完整路径。

答案 2 :(得分:1)

如果您只想要脚本部分

,也可以使用Wscript.ScriptName

This link explains in more detail

答案 3 :(得分:1)

  

我可以使用文件的名称,但它需要可操作   尽管目录更改和重命名。

Wscript.ScriptName& WScript.ScriptFullName可以提供有关正在运行的脚本的详细信息,但是如果您希望从要更改的外部I / O文件执行代码。您可以使用ExecuteGlobal语句,它允许您将SubsFunctions移动到vbscript命名空间中。

myFunctions.vbs

Function GetDate()
     GetDate = DateValue(Now)
End Function

ExecuteInNameSpace.vbs:

Dim fsObj : Set fsObj = CreateObject("Scripting.FileSystemObject")
Dim vbsFile : Set vbsFile = fsObj.OpenTextFile("myfunctions.vbs", 1, False)
Dim myFunctionsStr : myFunctionsStr = vbsFile.ReadAll
vbsFile.Close
Set vbsFile = Nothing
Set fsObj = Nothing
ExecuteGlobal myFunctionsStr
Wscript.echo "Todays Date is: " & GetDate

通过将代码的所有处理移动到外部文件,您可以在处理过程中灵活地配置和更改所需的文件。