如何在批处理脚本中调用jar文件时传递两个参数?

时间:2017-05-16 11:39:45

标签: java batch-file jar

以下是我的批处理脚本

@echo off

set /a java_output=43350674
set /a img_id=1

setlocal enableDelayedExpansion

:top

for /f "tokens=1-2 delims= " %%A in ( 'java -jar test.jar %java_output%,%img_id%' ) do (
    set /a java_output=%%A
    set /a img_id=%%B
)

echo %java_output%
SET /A "err=error"
if "%java_output%" EQU "%err%" (
    echo %img_id% > batch_log.txt
    echo "End of batch script"
    exit /b %ERRORLEVEL%
) else (
    if %java_output% LSS 43350681 ( 
        goto top 
    )
)
endlocal

获得预期的输出,但我得到了"缺少操作数"每次for循环运行时都会出错。

Error in " set /a img_id=%%B " 

我怀疑这一行for /f "tokens=1-2 delims= " %%A in ( 'java -jar test.jar %java_output%,%img_id%' ) do (

这是将2个批处理变量传递给jar文件的正确方法吗?

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

public class Test {

    public static void main(String[] args) 
       {
        System.out.println(args[0]);
        int ret = Integer.parseInt(args[0]);
        // for error scenarios
        String err = "error";
        if(ret == 43350677)
        { 
            System.out.println(err+" "+ret);
        }
        else
        {
            System.out.println(ret+1+" "+ret);
        }
       }
}

以下是我的输出:

C:>test.bat
Missing operand.
43350675
Missing operand.
43350676
Missing operand.
43350677
Missing operand.
0
"End of batch script"

1 个答案:

答案 0 :(得分:0)

如果要从Windows脚本中启动jar文件以及参数,请使用以下语法:

call java -jar my-jar-file.jar parm1 parm2 ...

该调用是必不可少的,否则参数将被忽略。