如何将相对路径转换为DOS批处理文件中的完全限定路径?

Joh*_*ser 6 dos batch-file relative-path

我正在编写一个批处理文件,该文件在相对于传入批处理文件的第一个参数指定的文件夹中执行许多操作.在批处理文件中,我想向用户回应我正在使用的文件夹.但是,每次回显路径时,它都包含.... \我用来确定放置文件夹的位置.例如.

set TempDir=%1\..\Temp
echo %TempDir%
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用参数运行我的批处理文件\FolderA,则echo语句的输出将FolderA\..\Temp不是\Temp我期望的.

And*_*y M 8

SET "TempDir=%~1\..\Temp"
CALL :normalise "%TempDir%"
ECHO %TempDir%
…

:normalise
SET "TempDir=%~f1"
GOTO :EOF

…
Run Code Online (Sandbox Code Playgroud)

:normalise子例程使用%~f1的表达的相对路径转变成完整的一个,并将其存储回TempDir.


UPDATE

或者,您可以使用FOR循环,如下所示:

SET "TempDir=%~1\..\Temp"
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF"
ECHO %TempDir%
Run Code Online (Sandbox Code Playgroud)