2011-07-06 29 views
6

我正在写一个批处理文件,该文件在相对于传入批处理文件的第一个参数指定的文件夹中执行多个操作。在批处理文件中,我想向用户回复我正在使用的文件夹。但是,每次我回显路径时,都会包含.... \,用于确定将文件夹放在哪里。例如。如何将相对路径转换为DOS批处理文件中的完全限定路径?

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

所以,如果我跑我的批处理文件参数\FolderA,回波语句的输出是FolderA\..\Temp,而不是作为\Temp我期望的那样。

+0

也见... http://stackoverflow.com/questions/1645843/batch -file-决心绝对路径 - 从相对路径和-或文件名称 – SteveC

回答

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

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

… 

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


UPDATE

或者,你可以使用for循环,就像这样:

SET "TempDir=%~1\..\Temp" 
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF" 
ECHO %TempDir% 
相关问题