在批处理脚本中获取文件的绝对路径

时间:2013-09-05 17:04:52

标签: windows batch-file

我正在使用批处理脚本来调用java应用程序。 Java应用程序将绝对文件路径作为参数 我需要使用文件的相对或绝对路径作为参数调用我的批处理脚本,然后传递文件的绝对路径以执行java。例如:

从位置myscript

运行脚本c:/folderA
myscript  folderB/file.txt  
myscript  c:/folderA/folderB/file.txt
在这两种情况下,

应该能够获得完整的绝对路径c:/folderA/folderB/file.txt。 我该怎么做?
只是为了尽可能具体:我只需要BATCH SCRIPT代码来传递ti的相对或绝对路径作为参数后检索绝对文件路径字符串。当我用它调用java应用程序时,不是实际的部分。

2 个答案:

答案 0 :(得分:6)

您可以使用%~dpnx1。它扩展到第一个参数的驱动器,路径,名称和扩展名。但是,在将名称传递给另一个命令时,不要忘记引用该名称。

答案 1 :(得分:1)

“for ... do”语句中的绝对路径为%~f{variable_letter}

参数%1的过程调用中的绝对路径为%~f1%~dpnx1 但对于环境变量没有简单的解决方案。 解决方法是使用set语句创建过程,例如(对于Windows XP和更高版本):

@echo off
cd C:\Program Files\Microsoft Games
call :getabsolute "Purble Place\PurblePlace.exe"
echo %absolute%
call :getabsolute "Purble Place"
echo %absolute%
pause
goto :eof

:getabsolute
set absolute=%~f1
goto :eof