获得在VBScript当前目录(getting current directory in vbscr

2019-08-31 17:58发布

IM试图让当前目录下,并用它来无论运行应用程序所在的文件放在与不管路径如何改变

    dim fso: set fso = CreateObject("Scripting.FileSystemObject")
    dim CurrentDirectory
    CurrentDirectory = fso.GetAbsolutePathName(".")
    dim Directory
    Directory = CurrentDirectory\attribute.exe

    Set WinScriptHost = CreateObject("WScript.Shell")
    WinScriptHost.Run Chr(34) & "Directory" & Chr(34), 0
    Set WinScriptHost = Nothing

实际上,我怎么设置此代码,以便它做什么,我希望它正确吗? 提前致谢!

Answer 1:

您可以使用WScript.ScriptFullName将返回执行脚本的完整路径。


然后,您可以使用字符串操作(JScript示例 ):

scriptdir = WScript.ScriptFullName.substring(0,WScript.ScriptFullName.lastIndexOf(WScript.ScriptName)-1)


或者从FileSystemObject的帮助,(VBScript中为例 ):

scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)


Answer 2:

您可以使用currentDirectory所属性。

Dim WshShell, strCurDir
Set WshShell = CreateObject("WScript.Shell")
strCurDir    = WshShell.CurrentDirectory
WshShell.Run strCurDir & "\attribute.exe", 0
Set WshShell = Nothing


Answer 3:

你的问题是没有得到的目录( fso.GetAbsolutePathName(".")解决了当前工作目录就好了)。 即使你想脚本目录,而不是当前的工作目录,你可以很容易地确定为雅各布斯腾中描述了他的答案 。

什么在你的代码不工作是建设从目录和可执行文件的路径。 这是无效的语法:

Directory = CurrentDirectory\attribute.exe

如果你想建立一个自变量和一个文件名的路径,文件名必须指定为一个字符串(或包含字符串的变量),并且用变量目录变量级联:

Directory = CurrentDirectory & "\attribute.exe"

或(更好),你建立基于路径构建路径方法:

Directory = fso.BuildPath(CurrentDirectory, "attribute.exe")


Answer 4:

你行

Directory = CurrentDirectory\attribute.exe

不符合我在一个VBScript说明书中遇到的任何功能。 对我来说,以下的作品,寿不知道在哪里,你期待什么/“attribute.exe”居住。

dim fso
dim curDir
dim WinScriptHost
set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")
set fso = nothing
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run curDir & "\testme.bat", 1
set WinScriptHost = nothing


Answer 5:

'-----Implementation of VB6 App object in VBScript-----
Class clsApplication
    Property Get Path()
          Dim sTmp
          If IsObject(Server) Then
               'Classic ASP
               Path = Server.MapPath("../")
          ElseIf IsObject(WScript) Then 
               'Windows Scripting Host
               Path = Left(WScript.ScriptFullName, InStr(WScript.ScriptFullName, WScript.ScriptName) - 2)
          ElseIf IsObject(window) Then
               'Internet Explorer HTML Application (HTA)
               sTmp = Replace( Replace(Unescape(window.location), "file:///", "") ,"/", "\")
               Path = Left(sTmp, InstrRev( sTmp , "\") - 1)
          End If
    End Property
End Class
Dim App : Set App = New clsApplication 'use as App.Path


Answer 6:

简单:

scriptdir = replace(WScript.ScriptFullName,WScript.ScriptName,"")


文章来源: getting current directory in vbscript