2011-07-06 1 views
6

私は、バッチファイルに渡された最初の引数に相対して指定されたフォルダ内にいくつかの操作を行うバッチファイルを作成しています。バッチファイル内では、私が作業しているフォルダをユーザーにエコーしたいと思います。しかし、パスをエコーするたびに、フォルダをどこに置くかを決めるために使用した....が含まれています。例えば。相対パスをDOSバッチファイルの完全修飾パスに変換するにはどうすればよいですか?

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

私は、パラメータ\FolderAと私のバッチファイルを実行する場合、私が期待するように、エコーのステートメントの出力はFolderA\..\Tempの代わり\Tempです。

+0

も参照してください... http://stackoverflow.com/questions/1645843/batch -file-resolve-relative-path-from-relative-path-and-or-file-name – SteveC

答えて

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

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

… 

:normaliseサブルーチンは、完全なものに相対パスを変換し、バックTempDirにそれを格納するために%~f1式を使用しています。


UPDATEまた

、あなたはこのように、FORループを使用することができます

SET "TempDir=%~1\..\Temp" 
FOR /F "delims=" %%F IN ("%TempDir%") DO SET "TempDir=%%~fF" 
ECHO %TempDir% 
関連する問題