批处理 - 解析相对路径

Batch - Resolve relative path

我的批处理脚本位于以下目录中:

\test\public\windows\scripts\test.bat

我正在尝试获取此文件夹的路径:\test\public\windows\logs 我试过使用 %~dp0 来获取脚本的路径,我试过:

SET REL_PATH=..\..\

问题是它没有向我显示此文件夹。

SET REL_PATH=..\..\

path 指向你的路径,为了验证它是从哪里来的,请制作一个

echo %CD%

它会告诉您系统正在查看的路径。

然后将 %CD% 的相对路径设置为脚本的路径。

如果您在执行此操作后卡住,请发表评论。

例如:

echo %CD%

给出 C:\windows\system32

并且您想在 c:\test\public\windows\scripts\test.bat

处执行批处理文件

你需要做

SET REL_PATH=%CD%\..\..\test\public\windows\scripts\

要移动到此路径,请执行以下操作:

cd /d %REL_PATH%

要解决 UNC 路径,请执行 PUSHD 和 POPD:

@echo off
pushd \test\public\windows\scripts\

REM do your work
call test.bat

popd

参考:How to run batch file from network share without "UNC path are not supported" message?

使用网络驱动器时使用 PUSHD 命令。这将为 UNC 路径分配一个未使用的驱动器号,以便您可以像往常一样导航它。然后就可以用POPD释放了

例如:

@ECHO OFF

PUSHD "\test\public\windows\scripts"

REM This will be \test\public\windows
DIR ".\..\..\"

POPD