在 Windows 7 中以管理员身份运行时如何从另一个 .bat 文件调用 .bat 文件

Gle*_*nce 1 cmd batch-file

这是一个简单的例子,在同一目录中有两个 bat 文件 caller.bat 和 callee.bat。

调用者.bat

call callee.bat
pause
Run Code Online (Sandbox Code Playgroud)

被调用者.bat

echo "All good"
Run Code Online (Sandbox Code Playgroud)

当我通过在资源管理器中双击 caller.bat 运行它时,它按预期工作,但如果使用右键单击“以管理员身份运行”,我会得到

'callee.bat' 未被识别为内部或外部命令...

Gle*_*nce 5

问题是当以管理员身份运行时,当前工作目录更改为 C:\Windows\System32。我的解决方案是将 caller.bat 中的当前工作目录显式更改为与运行文件的目录相同。这是通过从 %0 参数中提取驱动器和路径来完成的,如下所示:

cd /D %~dp0
call callee.bat
pause
Run Code Online (Sandbox Code Playgroud)

cd 的 /D 参数会导致目录和路径发生更改,并且需要处理调用方 .bat 文件不在 C: 驱动器上的情况。

更多信息:Windows 批处理文件的隐藏功能