gpt4 book ai didi

java - 从 Java 使用时 Windows 2008 Server 上 %~dp0 的行为

转载 作者:行者123 更新时间:2023-12-01 18:11:17 26 4
gpt4 key购买 nike

Issue Environment : Windows Server 2008 R2 Build 7601

我有一个批处理文件 SomeBatchFile.bat,它使用 %~dp0 来获取脚本位置。但是,当它在 Windows Server 2008 R2 Build 7601 上从 java 程序执行时,它会显示出错误行为。

这是行为,

1)当这样执行时

进程 proc= Runtime.getRuntime().exec("c:\\full\\path\\SomeBatchFile.bat");

SomeBatchFile.bat 文件保留在 C:\full\path 中(本质上给出了实际的完整路径),它返回预期结果 c:\完整\路径\

2)但是当像这样执行时

进程 proc= Runtime.getRuntime().exec("SomeBatchFile.bat");

SomeBatchFile.bat 文件保留在 C:\Windows 中(本质上是环境变量 PATH 的一部分的位置)。这返回错误值而不是 BAT 脚本位置,它返回调用此脚本的 java 程序位置

这是我正在使用的脚本文件,

REM Just prints the script location to a file

set MY_HOME=%~dp0
echo %MY_HOME% >> test_out.txt

REM And some other business logic here ...

On Windows Server 2003, this is working absolutely fine.

知道为什么会这样吗?这是 Java/Windows 错误吗?以及如何解决这个问题?

最佳答案

如果您尝试在相对路径中启动脚本,您还应该尝试以下语法:

进程 proc= Runtime.getRuntime().exec(".\\SomeBatchFile.bat");

进程proc= Runtime.getRuntime().exec(".\SomeBatchFile.bat");

进程proc= Runtime.getRuntime().exec("./SomeBatchFile.bat");

三者之一应该可以工作。

关于java - 从 Java 使用时 Windows 2008 Server 上 %~dp0 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com