2011-07-06 121 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% 
相關問題