retroActive
retroActive

Reputation: 35

BAT: Parse Output File For Error Handling

I have a process that is kicked off by a scheduled batch file daily. I need to have error handling built in to restart the process if there is an error. All works great most days but I get a time out error once a month or so that is unavoidable. The process does not output an errorlevel to the bat file so I need to be able to parse the output file to determine if the process needs to restart.

I tried using the FOR /F function to pass the contents of line 12 as a variable to use in an IF statement but I have been unsuccessful. I can obviously skip to line 12 but then I am left dealing with the tokens of the remaining lines. Does anyone have any suggestions that I could try?

Output file when all is well:

(Line Numbers Added for Readability)

1  Pricing Script
2   
3  ________________________________________________________________________ 
4
5  Retrieve Prices
6
7  Date of price file: 070912
8  Regular only 
9  Connecting to server intdata.com
10 TCP/IP connection established
11  
12 TySymb          Interactive Data
+400 more lines

Output file when there is an error:

1  Pricing Script
2  
3  ________________________________________________________________________ 
4 
5  Retrieve Prices
6  
7  Date of price file: 071012
8  Regular only 
9  Connecting to server intdata.com
10 TCP/IP connection established
11 Time Out
12 General Time Out. The User ID and/or Password might be incorrect.

Upvotes: 1

Views: 605

Answers (2)

dbenham
dbenham

Reputation: 130819

I would simply look for the error message in the output using FIND or FINDSTR. I wouldn't worry about the line number.

find "General Time Out. The User ID and/or Password might be incorrect." "yourFile.log" && (
  echo Timeout occurred, you must put code here to restart
)

or

findstr /c:"General Time Out. The User ID and/or Password might be incorrect." "yourFile.log" && (
  echo Timeout occurred, you must put code here to restart
)

Upvotes: 2

wmz
wmz

Reputation: 3685

This will test only line 12 of your file for a given string:

@echo off
for /f "skip=11 tokens=*" %%i in (your_log_filename) do (
 echo %%i | find "General Time Out" >nul
 goto check
)

:check
if errorlevel 1 (echo No Timeout occured!) else (echo Timeout occured)

Upvotes: 0

Related Questions