2011-07-06 20 views
6

Piszę plik wsadowy, który wykonuje wiele operacji w folderze określonym względem pierwszego argumentu przekazanego do pliku wsadowego. W pliku wsadowym chciałbym wyświetlić użytkownikowi folder, w którym działam. Jednak za każdym razem, gdy wyświetlam ścieżkę, zawiera ona ...., która służy do określenia, gdzie umieścić mój folder. Na przykład.Jak przekonwertować ścieżkę względną na pełną ścieżkę w pliku wsadowym DOS?

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

Tak, jeśli uruchomię mój plik wsadowy z parametrem \FolderA, wyjście instrukcji echo jest FolderA\..\Temp zamiast \Temp jak bym się spodziewał.

+0

patrz również ... http://stackoverflow.com/questions/1645843/batch -file-resolve-absolute-path-from-relative-path-and-or-nazwa-pliku – SteveC

Odpowiedz

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

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

… 

:normalise podprogram używa wyrażenia %~f1 przekształcić ścieżkę względną do pełnego jednego i przechowywać go z powrotem do TempDir.


UPDATE

Alternatywnie, można użyć pętli for tak:

SET "TempDir=%~1\..\Temp" 
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF" 
ECHO %TempDir% 
Powiązane problemy