批处理 - 解析相对路径
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
我的批处理脚本位于以下目录中:
\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