cmd - bat 文件: get parent pathname

标签 cmd batch-file pathname

以下大部分有效。 “大部分”,因为当上下文 XML 文件尝试通过相对路径名包含另一个文件时,使用 SOMETHING..\tasks\路径名会使 Spring 感到困惑。所以,我似乎需要一种在 BAT 文件中将变量设置为路径名的父目录的方法。

set ROOT=%~dp0
java -Xmx1g -jar %ROOT%\..\lib\ajar.jar %ROOT%\..\tasks\fas-model.xml tasks

最佳答案

要解析相对路径名,您可以使用子例程调用。 在批处理文件的末尾放置以下行:

GOTO :EOF

:RESOLVE
SET %2=%~f1 
GOTO :EOF

这是一个子例程,它将其第一个参数解析为完整路径 (%~f1) 并将结果存储到由第二个参数命名的(全局)变量

您可以像这样使用例程:

CALL :RESOLVE "%ROOT%\.." PARENT_ROOT

调用后,您可以使用变量 %PARENT_ROOT%,该变量包含 %ROOT% 变量中包含的父路径名。

完整的批处理文件应如下所示:

SET ROOT=%~dp0

CALL :RESOLVE "%ROOT%\.." PARENT_ROOT

java -Xmx1g -jar "%PARENT_ROOT%\lib\ajar.jar" "%PARENT_ROOT%\tasks\fas-model.xml" tasks

GOTO :EOF

:RESOLVE
SET %2=%~f1 
GOTO :EOF

关于cmd - bat 文件: get parent pathname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172122/

相关文章:

Windows 重定向错误无法使用附加功能

c - ftok 路径名与文件名

cmd - NSIS 运行时 CMD 路径和参数中带有空格

batch-file - 在不同的行上询问 set/p 变量

java - 使用 apache commons exec 运行简单的 cmd.exe 命令

if-statement - Windows 批处理文件如果失败 - 30000000000000 如何等于 40000000000?

batch-file - .bat 文件中的错误处理

lisp - 如何使用重命名文件在 Lisp 中移动文件

标识为主类的 Java 主要参数

java - cmd 无法识别 ssl 连接证书