下面是我运行的脚本" 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此时出人意料。
谁能告诉我这个问题是什么。
答案 0 :(得分:2)
由于java_output
中的输出为1 2
(如显示),因此if
语句变为
if 1 2 neq 10 ...
if
期待if string1 op string2 ...
并将2
视为比较运算符,该运算符必须是==
,equ
,neq
,{{}之一1}}。 lss
,leq
,gtr
由于你将数字与空格串在一起,所以除了不等于geq
之外,它几乎不可能是其他任何东西。
给出回应:
10
应该是
set "java_output=!java_output! %%J"
)
set java_output=%java_output%
在
set /a java_output=%%J"
)
行没有做任何事情并且是多余的。
set java_output=%java_output%
指定数值或算术表达式。