Avatar of kumar siva
kumar siva
 asked on

Syantx of command of wrong when we ran with single arument

When I ran the below script with single/Without  arguments
Ex.AB-A0123-DLY
  AB-A0123-DLY 4

it was giving the error as The syntax of the command is incorrect was wrong.
@echo off
cls
setlocal EnableDelayedExpansion

SET arg1=%1
call %~dp0\ABMaster.bat

::#Get the number of arguments
SET /A ARGS_COUNT=0
FOR %%A in (%*) DO SET /A ARGS_COUNT+=1 

::#Calculate thread count,thread start and thread end numbers only all three arguments are supplied.
IF "%3" == "" GOTO cont
SET /A a = %1%
SET /A b = %2%
SET /A c = %3%
:cont

IF %ARGS_COUNT% == 2 GOTO MIN_ARG
IF %ARGS_COUNT% geq 4 (
      :MIN_ARG      
            echo Incorrect arguments provided. Ending the job. Run the job with  correct arguments as shown in below example. 
            set ERRORLEVEL=-1 
            GOTO JOB_STATUS
      )
IF %ARGS_COUNT% leq 1  (
      IF "%arg1%" == "" (
            @echo Executing job without Parameters
            Java %JAVA_OPTS% -Djava.awt.headless=true -server -Xms1024m -Xmx2048m -XX:MaxPermSize=512m -XX:NewSize=64m -XX:MaxNewSize=64m -XX:NewRatio=3 com.abc.abcDriver AB-A0123-DLY >%BATCH_LOG%\AB-A0123-DLY_%timestamp%.txt 2>&1
      ) ELSE (
            @echo Executing job with single Parameters
            FOR /L %%G IN (1,1,%arg1%) DO (
                  @echo Executing job with Parameter %%G
                  cmd /c start /b %~dp0TestParallelRun.bat AB-A0123-DLY %%G %arg1%
                  ping -n 6 127.0.0.1 >nul
            )
      )

      :checkfile
      FOR /L %%G IN (1,1,%arg1%) DO (
            if not exist %BATCH_LOG%\AB-A0123-DLY_T_%%G_%arg1%.txt GOTO checkfile
            )
      FOR /L %%G IN (1,1,%arg1%) DO (
            set /p value=< %BATCH_LOG%\AB-A0123-DLY_T_%%G_%arg1%.txt
            SET trimval=!value: =!
            IF NOT !trimval! == 0 (
                  set ERRORLEVEL=!trimval!
                  del %BATCH_LOG%\CO\AB-A0123-DLY_T_*.txt
                  GOTO JOB_STATUS
            )
      )
)

IF "%ARGS_COUNT%" == "3" (
	FOR /L %%G IN (%b%,1,%a%) DO (			
		@echo Executing job with Parameter %%G
		cmd /c start /b %~dp0TestParallelRun.bat AB-A0123-DLY %%G %a%
		ping -n 6 127.0.0.1 >nul
		
		IF %%G geq %c% (			
			goto :BREAK
		)
	)
	:checkfile2
	FOR /L %%G IN (%b%,1,%a%) DO (
		if not exist %BATCH_LOG%\AB-A0123-DLY_T_%%G_%a%.txt GOTO checkfile2
		IF %%G geq %c% (			
			goto :checkfile3
		)
	)
	:checkfile3
	FOR /L %%G IN (%b%,1,%a%) DO (
		set /p value=< %BATCH_LOG%\AB-A0123-DLY_T_%%G_%a%.txt
		SET trimval=!value: =!
		IF NOT !trimval! == 0 (
			set ERRORLEVEL=!trimval!
			del %BATCH_LOG%\AB-A0123-DLY_T_*.txt
			GOTO JOB_STATUS
		)
		IF %%G geq %c% (			
			goto :BREAK
		)
	)
)

:BREAK
if exist %BATCH_LOG_TRUNK%\AB-A0123-DLY_T_*.txt del %BATCH_LOG_TRUNK%\AB-A0123-DLY_T_*.txt

:JOB_STATUS
call %~dp0\ABCJobStatus.bat

Open in new window

Windows Batch

Avatar of undefined
Last Comment
Bill Prew

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Bill Prew

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
kumar siva

ASKER
With three arguments it was working fine
Ex:AB-A0123-DLY  5 5 15  and batch was ended successfully with zero  return code as shown in below.
Batch Job succeeded with error leve = 0 l
ABCJobStatus.bat code as shown in below
set errlvl=%ERRORLEVEL%

IF %errlvl% ==-99 (
echo Batch Job Aborted with error level = %errlvl% 
)

IF %errlvl%==0 (
echo Batch Job succeeded with error level = %errlvl% 
)

IF %errlvl%==-1 (
echo Batch ended but not succeeded because it's return error code = %errlvl% 
)
IF %errlvl%==4 (
echo FT Batch is not succeeded because it's return error code = %errlvl% 
)
IF %errlvl%==5 (
echo Batch is not succeeded because it's return error code = %errlvl% 
)
set RESEXE=%errlvl%

Open in new window


It was failing with single and without arguments as explained in the above
Bill Prew

Did you understand the problem I identified, and did it resolve your problem?

~bp
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck