获取批处理文件中两个目录的路径

2024-04-14

我想获取从当前位置向上 2 个目录的文件夹的路径。

我正在做以下事情:

echo %CD%
set NEW_PATH = ..\..\bin\
echo %PATH%

当我运行上面的代码时,我打印了当前目录路径,但 NEW_PATH 不是。它只是说 ECHO_OFF。

从这个链接:批处理文件:相对路径错误,从当前目录向上一级 https://stackoverflow.com/questions/16960880/batch-file-error-in-relative-path-one-level-up-from-the-current-directory我也尝试过

set NEW_PATH = %~dp0..\..\bin\

但仍然是同样的问题。

我怎样才能得到这个目录路径?


对于每个文件夹,..指向其父文件夹,因此,当前文件夹的上两层是..\..。现在,要将相对引用转换为绝对完整路径,我们需要获取对指向的文件/文件夹的引用。为此,我们可以将相对引用作为参数传递给子例程,或者我们可以使用for command

@echo off

    setlocal enableextensions disabledelayedexpansion

    set "newDir=..\..\bin"

    rem With a subroutine   
    call :resolve "%newDir%" resolvedDir
    echo %resolvedDir%

    rem With a for - retrieve the full path of the file/folder being
    rem              referenced by the for replaceable parameter
    for %%f in ("%newDir%") do echo %%~ff

    endlocal
    goto :EOF

:resolve file/folder returnVarName
    rem Set the second argument (variable name) 
    rem to the full path to the first argument (file/folder)
    set "%~2=%~f1"
    goto :EOF

EDIT

提交的代码获取当前目录的相对路径,而不是批处理文件目录。如果您需要相对的批处理文件,请尝试

set "newDir=%~dp0\..\..\bin\"

where %~dp0是当前批处理文件的驱动器和路径(%0是对当前批处理文件的引用)并继续使用相同/相似的代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取批处理文件中两个目录的路径 的相关文章

随机推荐