Windows,相对路径和海拔

Windows, relative paths and elevation

我对(在我看来)应该是一件容易的事感到生气: 在我的桌面上(但可能在任何地方)我有一个文件夹 "project"、一个 "console.msc" 和另一个文件夹 "files"。

"console.msc" 有一个 运行s file1.bat 的任务,如果我使用完整路径但它不使用相对路径,它就可以工作。

c:\users\user1\Desktop\project\files\file1.bat 工作

.\files\file1.bat 不工作

我一直看到自定义 mmc 以提升的权限启动(很好,我想要它)但是用于调用 file1.bat 的相对路径不起作用并且返回的错误是 "Windows cannot find [..]"

有人知道如何告诉 Windows 保留 mmc 所在的当前文件夹 运行 吗?欢迎任何线索! :-)

运行 具有提升权限的进程可能会导致该进程的 working directory 不同,这就是相对路径不起作用的原因。

如果您不想使用绝对路径,则必须找到一种方法来获取应用程序所在目录的路径,然后将相对路径附加到该目录。

您没有指定您如何 运行 您的任务,但如果它来自另一个 .BAT 文件,则批处理文件目录的完整路径存储在 %~dp0 变量下。您可以查看 this question 的答案以获取更多详细信息。

而且您也可以随时使用 Process Explorer 之类的工具来查看有关 运行 进程的信息,包括工作目录(那里称为当前目录)。