下面是我在命令提示符下运行"test.bat 1“命令的脚本,java程序以1作为输入,并返回增量1i.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在这个时候是出乎意料的。
有人能告诉我问题是什么吗。
发布于 2017-05-11 11:36:18
由于java_output中的输出为1 2 (如所示),因此if语句将变为
if 1 2 neq 10 ...if期望if string1 op string2 ...,并将2视为比较运算符,它必须是==、equ、neq、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%线什么也不做,而且是多余的。
set /a分配一个数值或算术表达式。
https://stackoverflow.com/questions/43913974
复制相似问题