我在将 java 版本作为字符串输出时遇到一些问题。 在批处理脚本中,我这样做了:
for /f tokens^=2-5^ delims^=.-_^" %%j in ('%EXTRACTPATH%\Java\jdk_extract\bin\java -fullversion 2^>^&1') do set "JAVAVER=%%j.%%k.%%l_%%m"
输出为:1.8.0_121
现在我想为 PowerShell 执行此操作,但我的输出是:1.8.0_12
,我最后错过了一个“1”现在我已经尝试使用修剪和分割,但没有给我任何结果正确的输出有人可以帮助我吗?
这就是我使用 PowerShell 得到的结果
$javaVersion = (& $extractPath\Java\jdk_extract\bin\java.exe -fullversion 2>&1)
$javaVersion = "$javaVersion".Trim("java full version """).TrimEnd("-b13")
完整输出为:java完整版本“1.8.0_121-b13”
最佳答案
TrimEnd()
的工作方式与您的预期略有不同:
'1.8.0_191-b12'.TrimEnd('-b12')
结果:1.8.0_19
也是如此:
'1.8.0_191-b12'.TrimEnd('1-b2')
原因是,TrimEnd()
删除尾随字符集,而不是子字符串。因此 .TrimEnd('-b12')
的意思是:从字符串末尾删除所有出现的 '-b12' 集合中的任何字符。其中包括 '-'
之前的最后一个 '1'
。
根据您的情况,更好的解决方案是-replace
:
'java full version "1.8.0_191-b12"' -replace 'java full version "(.+)-b\d+"','$1'
关于java - 使用powershell获取特定的java版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53608570/