8

Im using sendemail in a batch file. At the end of sending an email it replys with a message of succses or failure. For example

Jan 10 00:46:54 villa sendemail[456]: Email was sent successfully!

Is it possible to capture this message into a variable for processing?

Thx

2 Answers 2

16

Yes, you need to execute sendmail through the for loop:

for /f "tokens=*" %%a in ('[sendmail command line]') do (
    set VAR=%%a
)

After this runs, VAR will be set to the last line that sendmail output. You can then do processing on that line

for /f "tokens=5,* delims= " %%a in (%VAR%) do (
    if "%%b"=="Email was sent successfully!" (
        echo SUCCESS
        exit /b 0
    ) else (
        echo FAILURE
        exit /b 1
    )
)
Sign up to request clarification or add additional context in comments.

3 Comments

Notice to myself: start looking for such things on Stackoverflow instead of google.
what about a command line like strings %1 -t d | grep -e "[0-9]\{1,3\}"? (tihs one with unxutils, but potentially with windows-only programs)
Thanks. This can be ran in cmd.exe outside of a BAT file as one command: for /f %a in ('type file.txt') do (set VAR=%a). DO NOT do this: for /f %a in ('type file.txt') do ( set VAR=%a ) (VAR = contents of file.txt plus one space character); don't do it unless you want a space at the end.
-1

normally, you just use the for loop to capture the output. see here notes 4. (and search internet for more)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.