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

Get the absolute path of file in batch script

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

从位置c:/folderA运行脚本myscript

1
2
myscript  folderB/file.txt  
myscript  c:/folderA/folderB/file.txt

在这两种情况下都应该能够得到完整的绝对路径c:/folderA/folderB/file.txt。我该怎么做?尽可能具体:在将相对路径或绝对路径作为参数传递给ti之后,我只需要批处理脚本代码来检索绝对文件路径字符串。不是我调用Java应用程序时的实际部分。


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


"for…do"语句中的绝对路径是%~f{variable_letter}

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

1
2
3
4
5
6
7
8
9
10
11
12
@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