misguided
misguided

Reputation: 3799

batch scripting

Intro : I am new to batch scripting. Will like to have a leads on the following scripts.

Objective : Have to write a batch command to update an application . And then read the log that is generated after the application has been updated , to check if it has been successfull.

I run the application using a simple batch file , which has the command

"C:\Program Files\Application\Test.exe" /application paramater /q /from "\\share\file"

The logfile (xyz.log) for the result in generated in

C:\Documents and Settings\<user>\locals~1\temp\Application

I want my batch file to run the first command and read the results generated in the log file (serach for success string).

CanI get any inputs on this please.

Upvotes: 0

Views: 726

Answers (2)

kevlar1818
kevlar1818

Reputation: 3125

This is NOT tested, but it's good starting point, and you can use it to learn some MS-DOS/batch commands. If you need specific syntax help, type in the command prompt [some-command] /?

@echo off
:: variables --------------------
set appexe=C:\Program Files\Application\Test.exe
set share=\\share\file
set logfile=%TEMP%\Application\xyz.log
set appcmd="%appexe%" /param /q /from "%share%"

if not exist "%appexe%" echo Executable not found& goto END
if not exist "%share%" echo Shared folder not found& goto END

:: run executable ---------------
%appcmd%

if not exist "%logfile%" echo Logfile not found& goto END

:: iterate through logfile ------
find "update success text" "%logfile%" >NUL || (echo Update unsuccessful& goto END)
echo Update successful!

:END
pause
exit

Edit: Used find rather than a for loop. +1 and thanks to Andriy M

Upvotes: 3

Andriy M
Andriy M

Reputation: 77737

You can use the FIND command to search a file for a string:

FIND "success" "%TEMP%\Application\xyz.log" >NUL && (ECHO Update successful) || (ECHO Update failed)
  • %TEMP% evaluates to the system temporary folder for the current user.

  • >NUL suppresses the output of the FIND command.

  • && passes control to the subsequent command (ECHO) if the string was found.

  • || passes control to the command after it (the other ECHO) if the search failed.

If you want to perform more than one command as a result of FIND, you can use something like this:

FIND "string" file_name && (command1 & command2 & …) || (command3 & command4 & …)

Alternatively you can use the GOTO command. For example, like this:

FIND "success" "%TEMP%\Application\xyz.log" >NUL || (GOTO searchfailed)
series of commands as a result of successful search
GOTO :EOF

:searchfailed
series of commands as a result of unsuccessful search

:label_name is a label declaration. GOTO searchfailed means jump to the line where the searchfailed label is declared.

GOTO :EOF essentilly exits the batch script. (:EOF is a special pre-defined label that points at the End Of File.)

Upvotes: 1

Related Questions