java - 使用powershell获取特定的java版本

标签 java powershell

我在将 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/

相关文章:

java - 如何让BlockingQueue接受多种类型?

java - 博弈树转置表(连接4)

java - 将 Spring 应用程序部署到生产环境时人性化 URL 方案

powershell 中的 python 与 python CLI

c# - UI 自动化 cmdlet 找不到控件

azure - 获取过去 30 天内的最后一次登录,Get-MgAuditLogSignIn - PowerShell

java - executeUpdate 中的动态变量 (Java)

java - 在添加之前检查 ArrayList 中元素的 ID 是否已经存在

powershell - MS 的哪些 PowerShell cmdlet 支持 -UseTransaction

git - 在 2 个日期时间之间在 Azure DevOps 中使用 Get Commit API 时,它返回的结果比预期多吗?