有没有办法引用在VBScript中运行的当前文件?我可以使用文件的名称,但它需要可操作,尽管目录更改和重命名。这样做的目的是在文件I / O操作中使用该文件。如果不可能,是否有任何可能的替代方案,例如使文件不可重命名或不可移动?
答案 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)
答案 3 :(得分:1)
我可以使用文件的名称,但它需要可操作 尽管目录更改和重命名。
Wscript.ScriptName
& WScript.ScriptFullName
可以提供有关正在运行的脚本的详细信息,但是如果您希望从要更改的外部I / O文件执行代码。您可以使用ExecuteGlobal语句,它允许您将Subs
和Functions
移动到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
通过将代码的所有处理移动到外部文件,您可以在处理过程中灵活地配置和更改所需的文件。