如何在 Windows 命令行中解析 Java 命令输出
How to Parse Java Command Output in Windows Command Line
我的目标是能够解析以下 windows 命令行命令(以及在 powershell 中)的输出:
java -XshowSettings:properties -version
我正在尝试专门获取显示 "java.home = Path\to\java\home"
的行
到目前为止,我已经尝试过像
这样的命令
java -XshowSettings:properties -version | findstr /C:java.home
或重定向到一个文件并从那里解析但文件为空
java -XshowSettings:properties -version > tmp.txt
我还尝试了以下 powershell 命令
java -XshowSettings:properties -version | Select-String -Pattern 'java.home' -SimpleMatch
java -XshowSettings:properties -version | Out-String -Stream | Select-String -Pattern 'home' -SimpleMatch
我什至尝试为命令创建一个函数并为命令输出设置一个变量,然后我将尝试解析该变量,但该变量也是空的
function javahome {
java -XshowSettings:properties -version
}
$Jhome = javahome
$Jhome 是空的...
我认为 java 命令的输出不是通过命令行捕获的相同管道输出的,即使它是在屏幕上输出的。我不确定如何找到这个单独的输出并开始解析它,但这是我需要做的。我需要能够解析出 java.home 路径,因为另一个进程需要它。我也需要其他线路,所以我不想拉 %JAVA_HOME% 环境变量。
此命令写入标准错误,而不是标准输出。
对于命令行,试试
java -XshowSettings:properties -version 2>&1 | findstr /C:java.home
2>&1
将标准错误重定向到标准输出。
或java -XshowSettings:properties -version 2> tmp.txt
将标准错误重定向到文件。
我的目标是能够解析以下 windows 命令行命令(以及在 powershell 中)的输出:
java -XshowSettings:properties -version
我正在尝试专门获取显示 "java.home = Path\to\java\home"
的行到目前为止,我已经尝试过像
这样的命令java -XshowSettings:properties -version | findstr /C:java.home
或重定向到一个文件并从那里解析但文件为空
java -XshowSettings:properties -version > tmp.txt
我还尝试了以下 powershell 命令
java -XshowSettings:properties -version | Select-String -Pattern 'java.home' -SimpleMatch
java -XshowSettings:properties -version | Out-String -Stream | Select-String -Pattern 'home' -SimpleMatch
我什至尝试为命令创建一个函数并为命令输出设置一个变量,然后我将尝试解析该变量,但该变量也是空的
function javahome {
java -XshowSettings:properties -version
}
$Jhome = javahome
$Jhome 是空的...
我认为 java 命令的输出不是通过命令行捕获的相同管道输出的,即使它是在屏幕上输出的。我不确定如何找到这个单独的输出并开始解析它,但这是我需要做的。我需要能够解析出 java.home 路径,因为另一个进程需要它。我也需要其他线路,所以我不想拉 %JAVA_HOME% 环境变量。
此命令写入标准错误,而不是标准输出。
对于命令行,试试
java -XshowSettings:properties -version 2>&1 | findstr /C:java.home
2>&1
将标准错误重定向到标准输出。
或java -XshowSettings:properties -version 2> tmp.txt
将标准错误重定向到文件。