【问题标题】:Get current working directory [duplicate]获取当前工作目录[重复]
【发布时间】:2015-06-03 12:07:48
【问题描述】:

我怎样才能获得一个正在运行的 vbscript/classic ASP 页面的路径?我使用了几个代码sn-ps,但都给出了当前工作目录(C驱动器路径),但我需要获取脚本所在的当前文件路径。

我正在尝试在 .VBS 文件和 .ASP 文件中显示此内容。

Dim folderName1
folderName1 = ""

Dim fso1
Set fso1 = CreateObject("Scripting.FileSystemObject")

Dim fullpath
fullpath = fso1.GetAbsolutePathName(folderName1)

response.write("folder spec: " & folderName1)
response.write( "fullpath:    " & fullpath)

上面的代码给出了 C 路径。

【问题讨论】:

  • 嗨 - 你在这里问的不是 100% 清楚......在你的脚本示例中(假设经典 ASP Vbscript?)完整路径应该返回当前工作目录,但你继续说代码给出了 C 驱动器路径,但你需要当前文件路径...?您能否更新并提供更详细的示例来说明您的要求,因为我不明白您缺少什么。您是否希望输出显示 asp/vbs 文件所在的位置?
  • 假设我正在运行 abc.vbs 文件。我需要获取存储 abc.vbs 文件的完整路径。
  • 如果您正在运行 abc.vbs - 您不会像在此处所写的那样使用 response.write,而是使用 wscript.echo - response.write 是您将在 Classic ASP 中使用的指令...?这可以改变你在这里的追求。

标签: vbscript asp-classic


【解决方案1】:

如果您使用的是 Windows 脚本宿主,WScript.ScriptFullName 返回当前正在执行的脚本的完整路径。您可以截断该字符串以确定文件夹。

strFolder = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))

如果你有一个FileSystemObject(或者不介意创建一个),你也可以使用GetParentFolderName 方法:

Set objFSO = CreateObject("Scripting.FileSystemObject")
strFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)

【讨论】:

    【解决方案2】:

    正如你在评论中提到的:

    假设我正在运行 abc.vbs 文件。我需要获取存储 abc.vbs 的完整路径

    我们将假设您正在讨论查找存储脚本的路径:

    Set fso = CreateObject("Scripting.FileSystemObject") 
    wscript.Echo fso.GetParentFolderName(wscript.ScriptFullName) 
    

    您提供的示例不适用于 .vbs 文件 - 您使用了 response.write,这在 .vbs 文件中不是有效指令。

    如果您试图获取正在运行的“脚本”的当前目录,在使用 vbscript 的经典 ASP 页面中,您可以使用:

    response.write(Server.MapPath("."))
    

    我希望这会有所帮助。

    【讨论】:

    • 抛出错误 Microsoft VBScript runtime error '800a01a8' Object required: 'fso'
    • 你提到了“abc.vbs”——你确定你没有运行“abc.asp”吗? :)
    • 我正在从双方进行测试。同时使用 .asp 和 .vbs
    • 在 .vbs 文件中运行时得到 800a01a8?
    • 我已经更新了我的答案,包括在经典 asp (vbscript) 中实现这一点的方式:response.write(Server.MapPath("."))
    【解决方案3】:

    您可以使用 server.variables。查看所有 server.variables 的脚本。

    <%
    dim item
    for each item in Request.ServerVariables
      Response.Write(item & "= "&Request.ServerVariables(item) & "<br>")
    next
    %> 
    

    然后你可以使用字符串操作例如“split”来定义文件夹或其他。

    【讨论】:

      【解决方案4】:

      您可以只使用以下简单的代码行,而不是解析整个 ServerVariables。它也不需要 WScript。

      parentFolder = Request.ServerVariables("APPL_PHYSICAL_PATH")
      

      【讨论】:

      • 这不适用于包含或 Server.Execute(...) 文件。
      猜你喜欢
      • 2012-07-22
      • 2010-09-18
      • 2020-06-03
      • 2016-04-05
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多