当前位置: 首页 > 面试题库 >

如何从批处理脚本获取Java版本?

孟浩慨
2023-03-14
问题内容

我正在尝试从下面给出的Java版本输出中获取‘6’

java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

同样,我写了这个批处理脚本

set VERSION6="1.6.0_21"
java -version 2>&1 | findstr "version" >ab.txt
for /f "tokens=3" %%g in (ab.txt) do (
  if not %%g == %VERSION6% echo %%g
  echo %%g
)

%%g 显示“ 1.6.0_21”

有人可以指导我正确的方向吗?我不太熟悉for /f


问题答案:
@echo off
setlocal

set VERSION6="1.6.0_21"
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
    @echo Output: %%g
    set JAVAVER=%%g
)
set JAVAVER=%JAVAVER:"=%
@echo Output: %JAVAVER%

for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
    @echo Major: %%v
    @echo Minor: %%w
    @echo Build: %%x
)

endlocal

在第一个for循环中,"tokens=3"说我们将仅使用命令输出中的第三个标记。无需将java -version命令的输出重定向到文件,我们可以在for循环本身中运行此命令。插入记号(^)是转义字符,并且需要,所以我们可以嵌入>&|在命令字符串符号。

for循环体内,我们设置了一个新的var JAVAVER,以便稍后可以对版本字符串进行一些操作。

set JAVAVER=%JAVAVER:"=%命令从版本字符串中删除双引号。

最后一个for循环解析Java版本字符串。delims=.说我们将使用句点来分隔令牌。tokens=1-3说我们将把字符串的前三个标记传递给循环的主体。现在,我们可以使用显式变量,%%v隐含变量(字母中的下一个字母)%%w和来获取Java版本字符串的组件%%x

当我在系统上运行它时,我得到:

Output: "1.6.0_24" 
Output: 1.6.0_24
Major: 1 
Minor: 6 
Build: 0_24


 类似资料:
  • 我希望获取在Jenkins管道Groovy脚本中执行的批处理文件的结果。 我知道我可以做到这一点: 但是,我需要运行一批命令并抓取批处理文件的结果。上面的例子只有一个命令。我需要首先更改目录,然后用一个参数执行“cmd”文件。所以我尝试了以下方法: “result”变量为null,即使日志显示命令确实返回了结果。我知道我可以将批处理文件结果输出到文本文件,并读取文本文件,但我只想看看是否可以像上面

  • 我只需要得到HH:MM来进行代码工作,但如果我这样做,那么变量是HH:MM:SS,我如何打破字符串或使其仅显示小时和分钟?

  • 主要内容:输出通过使用重定向命令可以在批处理脚本中进行登录。 语法 创建一个名为的文件,并在文件中输入以下命令。 上面的命令有一个错误,因为命令的选项是以错误的方式给出的。 输出 如果带有上面的文件的命令运行为 - 而打开文件,会看到下面的错误。 这个命令的语法是 - 通过键入获取更多的帮助内容。 如果打开名为的文件,它会显示一个执行命令的日志。

  • 主要内容:错误消息,复杂的命令行,子程序,Windows版本通常情况下,运行批处理文件时可能会遇到问题,而且大多数情况下都需要以某种方式调试批处理文件,以确定是批处理文件本身的问题。 以下是一些可以帮助调试批处理脚本文件的技术。 错误消息 要找出消息的来源,请按照下列步骤操作 - 第1步 - 移除,即或。 第2步 - 使用必要的命令行参数运行批处理文件,将所有输出重定向到日志文件以供以后比较。 第3步 - 在文件中搜索错误消息 第4步 - 检查上一行是否有

  • 问题内容: 我很确定答案是否定的,但是我想我还是会问。 如果我的站点引用了名为“ whatever.js”的脚本,是否可以从该脚本中获取“ whatever.js”?喜欢: 麻烦多于依赖检查所值得的,但是这真是麻烦。 问题答案: var scripts = document.getElementsByTagName(‘script’); var lastScript = scripts[scrip

  • 问题内容: 我需要从Java执行批处理脚本,该脚本执行以下操作 1)一旦启动,它将执行一个冗长的任务(最多几秒钟)。 2)此后,它显示提示“密码:”。 3)然后,用户输入密码并按Enter键。 4)然后,脚本完成其工作。 我知道如何从Java启动脚本,知道如何在Java中读取批处理脚本的输出,但是我不知道如何等待密码提示出现(如何知道批处理脚本正在等待密码条目)。 因此,我的问题是:如何知道批处理