在脚本中包含嵌套文件时的文件路径

File Path When Including Nested Files in a Script

我有一个脚本文件可以打开位于同一目录中的文本文件。我们称它为 SubScript。

SubScript.vbs

 Function DoSomething(foo) 
 ...
    Dim Key
        With CreateObject("Scripting.FileSystemObject")
        Key = .OpenTextFile("key.txt", 1).ReadAll
    End With
  ...
  End Function

脚本本身 运行 没有问题。但是,我想在另一个脚本文件 "MainScript" 中使用上面的脚本。 SubScript 位于 MainScript 目录的子文件夹中。

MainScript.vbs

With CreateObject("Scripting.FileSystemObject")
    ExecuteGlobal .OpenTextFile(".\SubDir\SubScript.vbs", 1).ReadAll
End With

当我尝试在 SubScript 中使用 DoSomething 函数时,出现找不到文件错误。我看到发生了什么,下标试图在 MainScript 目录中找到文本文件,而该目录不存在。

有没有办法在不使用绝对文件路径的情况下确保 SubScript 从 SubDir 加载文本文件?

相对路径被解析为进程的当前目录。有时您可以使用脚本的文件夹来获得更大的灵活性。但在你的情况下(.ExecuteGlobal),SubScript 的当前目录是 MainScript 的当前目录。

您应该将路径传递给 DoSomething(),除非您可以接受硬编码“.\SubDir\key.txt”。