批处理 - 解析相对路径

时间:2015-01-26 09:47:34

标签: windows batch-file cmd relative-path

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

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

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

SET REL_PATH=..\..\

事情是它没有向我显示这个文件夹。

2 个答案:

答案 0 :(得分:2)

SET REL_PATH=..\..\

路径指向您的路径,以验证它的来源,请制作

echo %CD%

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

然后设置从%CD%到脚本路径的相对路径。

如果您在执行此操作后遇到困难,请发表评论。

例如

echo %CD%

给出C:\windows\system32

并且您希望在c:\test\public\windows\scripts\32\test.bat

执行批处理文件

你需要做

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

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

cd /d %REL_PATH%

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

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

::do your work
test.bat

popd

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

答案 1 :(得分:0)

使用网络驱动器时使用PUSHD命令。这将为UNC路径分配一个未使用的驱动器号,以便您可以像平常一样进行导航。然后,您可以使用POPD发布它。

例如:

@ECHO OFF

PUSHD "\\test\public\windows\scripts\32"

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

POPD