首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本-此时意外错误

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

Stack Overflow用户
提问于 2017-05-11 11:21:56
回答 1查看 620关注 0票数 0

下面是我在命令提示符下运行"test.bat 1“命令的脚本,java程序以1作为输入,并返回增量1i.2。这应该一直持续到值为10为止。

下面是我的批处理脚本。

代码语言:javascript
复制
@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代码。

代码语言:javascript
复制
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在这个时候是出乎意料的。

有人能告诉我问题是什么吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 11:36:18

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

代码语言:javascript
复制
if 1 2 neq 10 ...

if期望if string1 op string2 ...,并将2视为比较运算符,它必须是==equneqlss中的一个。leqgtrgeq

因为你把数字和空格连在一起,所以它不太可能是任何不一样的东西--和10一样。

答复:

代码语言:javascript
复制
  set "java_output=!java_output! %%J" 
)
set java_output=%java_output%

应该是

代码语言:javascript
复制
  set /a java_output=%%J"
)

这个

代码语言:javascript
复制
set java_output=%java_output%

线什么也不做,而且是多余的。

set /a分配一个数值或算术表达式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43913974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档