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

问题描述 投票:0回答:1

以下是我的批处理脚本

@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"
java batch-file jar
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.