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

15

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
    )
)
3
  • 5
    Notice to myself: start looking for such things on Stackoverflow instead of google. Jun 17 '10 at 6:42
  • 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)
    – n611x007
    Sep 13 '13 at 12:39
  • 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.
    – Rublacava
    4 mins ago
-1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.