Syntax of the command is incorrect in batch?
38,656
You're missing a few crucial spaces. In these lines:
if EXIST !refLogPath!(
if /i "!logLine:~11,33!"=="... STATUS REPORT: ...Job status:"(
if "!lineCase!" =="1"(
if "!lineCase!"=="4"(
there must be a space placed before the parenthesis (
!
Yes, batch scripts are very hard to debug. But really, the script could look prettier (indented properly, etc...).
Related videos on Youtube
Author by
jerryh91
Updated on July 09, 2022Comments
-
jerryh91 almost 2 years
The cmd.exe keeps giving me a The syntax of the command is incorrect error when I run the following codes. Whats wrong with it?
code:
@echo off setlocal enabledelayedexpansion CALL ant clean build compile REM loop thru/Run ALL .properties file names from "ExecutionSDKTest_10.2.2" folder :labelNextTest FOR %%G in (C:\ExecutionSDKTest_10.2.2\*.properties) DO ( pause Set fileName=%%~nxG rem fileName==ENG-822.properties set testName=!fileName:~0,7! rem testName==ENG-822 set testNum=!fileName:~4,3! REM testNum==822 ECHO Please Create: !testName!_Ref.properties.txt in C:\ExecutionSDKTest_10.2.2\Logs echo Running:!fileName! java -jar Test.jar !fileName! > Logs\!fileName!.log set logPath="C:/ExecutionSDKTest_10.2.2/Logs/!fileName!.log" set refLogPath="C:/ExecutionSDKTest_10.2.2/Logs/!testName!_Ref.properties.txt" REM if Ref exists check Line by line if EXIST !refLogPath!( Call Perl TestProp1RefcheckLines.pl !fileName! !testName! ) else ( rem if ref does NOT exist check one important line rem returns case number to check for perl.exe c:\ExecutionSDKTest_10.2.2\TestProp1noRefCases.pl !testNum! set lineCase=!ERRORLEVEL! echo linecase is !lineCase! rem set LineCase to one, two, three or four, depending on case number FOR /F "tokens=*" %%B in (!logPath!) Do ( set logLine=%%B rem check line >> : "...job status:..." if /i "!logLine:~11,33!"=="... STATUS REPORT: ...Job status:"( if "!lineCase!" =="1"( if /i "!logline:~32!" == "job status: job finished_error" goto labelPass ) if "!lineCase!"=="2" ( if /i "!logLine:~32!" == "Job status: job QUEUED" goto labelPass ) if "!lineCase!"=="4"( if /i "!logLine:~32!" == "job Execution Finished Successfully" goto labelPass ) ) else ( if /i "!logLine:~11,33!"=="Error initializing the connection" goto labelPass if /i "!logLine!" == "Exception in thread ""main"" java.lang.IllegalArgumentException: timeout value is negative" goto labelPass ) ) goto labelFail ) ) pause REM Test Passed or Failed :labelFail echo !TestName! FAILED due to the above incorrect line goto labelNextTest :labelPass Echo !TestName! PASSED goto labelNextTest
-
paulsm4 almost 12 yearsThe basic problem is that you're better off putting something this complex in a Perl script. Or a Powershell script, or a VBScript. Or even an Ant task. Anything but a .bat file. IMHO... PS: Do you have any idea what line it's barfing on?
-
PA. almost 12 yearswelcome to the wonderful world of BAT programming and debugging. See this SO question stackoverflow.com/questions/8987208/…
-