2010-01-09 3 views
6

Im utilisant sendemail dans un fichier batch. À la fin de l'envoi d'un e-mail, il répond avec un message de succès ou d'échec. Par exempleRécupère STDOUT dans une variable

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

Est-il possible de capturer ce message dans une variable pour le traitement?

Thx

Répondre

-1

normalement, il suffit d'utiliser la boucle pour capturer la sortie. voir here notes 4. (et la recherche Internet pour plus)

11

Oui, vous devez exécuter sendmail à travers la boucle:

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

Après cela fonctionne, VAR sera réglé sur la dernière ligne sendmail sortie . Vous pouvez ensuite effectuer le traitement sur cette ligne

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

Avis à moi-même: commencez à chercher de telles choses sur Stackoverflow au lieu de google. –

+0

qu'en est-il d'une ligne de commande comme 'strings% 1 -t d | grep -e "[0-9] \ {1,3 \}" '? (tihs un avec unxutils, mais potentiellement avec des programmes Windows uniquement) – n611x007

Questions connexes