获取相对于批处理文件的路径 - 不是工作目录

获取相对于批处理文件的路径 - 不是工作目录

我在 E:\dir0\dir1 中有一个批处理文件,它调用该文件夹中的 exe0.exe。我需要 exe 的第一个参数是 E:\dir0\dir2\dir3\script.js。

问题是 dir0 的名称(以及它所具有的任何父目录)以及驱动器号可能会发生变化。我已了解到:

exe0.exe %~d0\dir0\dir2\dir3\script.js %*

现在我只需要以某种方式使其成为相对路径(使用 \..?)

答案1

为了清楚起见,听起来你正在描述一个看起来像这样的文件夹结构:

{unknown}\dir0\dir1\batfile.bat
{unknown}\dir0\dir1\exe0.exe
{unknown}\dir0\dir2\dir3\script.js

一个非常简单的方法是避免使用驱动器号,而是使用相对路径,如下所示:

exe0.exe ..\dir2\dir3\script.js

但是,如果您的 exe 需要获取完整的驱动器和路径作为其参数,那么您将需要更多。类似下面的内容将起作用:

pushd ..\dir2\dir3\script.js
set "ScriptDir=%cd%"
popd
exe0.exe "%ScriptDir%"

相关内容