批处理脚本 - 此时出现意外错误

时间:2017-05-11 11:21:56

标签: java windows batch-file

下面是我运行的脚本" test.bat 1"命令提示符中的命令, 1作为我的java程序的输入,它返回递增1,即2。 这应该继续,直到值为10.

以下是我的批处理脚本。

@echo off

set "java_output="

setlocal enableDelayedExpansion

:top

for /f "delims=" %%J in ('java -jar test.jar %*') do (
      set "java_output=!java_output! %%J" 
)
set java_output=%java_output%
echo %java_output%

if %java_output% NEQ 10 goto top
endlocal

以下是我在jar中的java代码。

public class Test {

    public static void main(String[] args) 
       {
        System.out.println(args[0]);
        int ret = Integer.parseInt(args[0]);
        System.out.println(ret+1);
       }
}

以下是我得到的输出。

C:> test.bat 1
 1 2
2此时出人意料。

谁能告诉我这个问题是什么。

1 个答案:

答案 0 :(得分:2)

由于java_output中的输出为1 2(如显示),因此if语句变为

if 1 2 neq 10 ...

if期待if string1 op string2 ...并将2视为比较运算符,该运算符必须是==equneq,{{}之一1}}。 lssleqgtr

由于你将数字与空格串在一起,所以除了不等于geq之外,它几乎不可能是其他任何东西。

给出回应:

10

应该是

  set "java_output=!java_output! %%J" 
)
set java_output=%java_output%

  set /a java_output=%%J"
)

行没有做任何事情并且是多余的。

set java_output=%java_output% 指定数值或算术表达式。