如何在批处理脚本中调用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"

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

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

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

最新更新