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

发布于 2024-11-18 18:49:06 字数 317 浏览 4 评论 0原文

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

set TempDir=%1\..\Temp
echo %TempDir%

因此,如果我使用参数 \FolderA 运行批处理文件,则 echo 语句的输出为 FolderA\..\Temp 而不是 \Temp代码> 正如我所期望的那样。

I am writing a batch file that does a number of operations in a folder that is specified relative to the first argument passed in to the batch file. Within the batch file, I would like to echo to the user the the folder I am working in. However, every time I echo the path, it contains the ....\ that I used to determine where to place my folder. For example.

set TempDir=%1\..\Temp
echo %TempDir%

So, if I run my batch file with a parameter \FolderA, the output of the echo statement is FolderA\..\Temp instead of \Temp as I would expect.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏天碎花小短裙 2024-11-25 18:49:06
SET "TempDir=%~1\..\Temp"
CALL :normalise "%TempDir%"
ECHO %TempDir%
…

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

…

:normalise 子例程使用 %~f1 表达式将相对路径转换为完整路径并将其存储回 TempDir


更新

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

SET "TempDir=%~1\..\Temp"
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF"
ECHO %TempDir%
SET "TempDir=%~1\..\Temp"
CALL :normalise "%TempDir%"
ECHO %TempDir%
…

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

…

The :normalise subroutine uses the %~f1 expression to transform the relative path into the complete one and store it back to TempDir.


UPDATE

Alternatively, you could use a FOR loop, like this:

SET "TempDir=%~1\..\Temp"
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF"
ECHO %TempDir%
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文