以下是我的批处理脚本
@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 ...
该调用是必不可少的,否则将忽略参数。