Comment logger la réponse d'une commande DOS

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Toto
Batcheur occasionnel
Messages : 1
Enregistré le : 24 mars 2010 14:50

Comment logger la réponse d'une commande DOS

Message par Toto »

Je souhaiterait logger dans un fichier la réponse d'une commande "TASKKILL" mais ça ne fonctionne pas avec la procédure habituelle :

TASKKILL /IM MonAppli.exe >> C:\Toto.log

(le fichier "Toto.log" est bien créé ou modifié mais il reste vierge, il ne contient ni le message "Opération réussie : le processus "MonAppli.exe" de PID 3564 a été arrêté." ni le message "Erreur : le processus "MonAppli.exe" est introuvable.")


alors que ça fonctionne (partiellement) pour une commande "XCOPY" :

XCOPY "Source" "Destination" >> C:\Toto.log

(le fichier "Toto.log" est bien créé ou modifié, il contient le message "0 fichier(s) copié(s)" mais il ne contient pas par exemple le message réponse qui précède "Fichier introuvable - Source" !!!)

J'ai essayé aussi d'exécuter un premier batch "Kill1.bat" contenant la commande "cmd /k Kill2.bat" qui appelle le second batch "Kill2.bat" contenant ma commande "TASKKILL /IM MonAppli.exe >> C:\Toto.log" mais pas mieux !!!

Please Help !!!
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: Comment logger la réponse d'une commande DOS

Message par Laddy »

Bonjour
vérifie que taskkill est bien présent sur ton systeme

ensuite pour xcopy si mes souvenirs sont bons il faut utiliser les errorlevel pour gérer les erreurs.
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
Fylhan
Batcheur occasionnel
Messages : 2
Enregistré le : 30 juin 2010 17:29

Re: Comment logger la réponse d'une commande DOS

Message par Fylhan »

Le double chevron >> redirige la sortie standard (stdout), et non la sortie d'erreur (stderr)
1 : c'est la stdout
2 : c'est la stderr
Du coup, si tu veux récupérer seulement les erreurs :

Code : Tout sélectionner

TASKKILL /IM MonAppli.exe 2>> C:\Toto.log
Si tu veux récupérer les 2 :

Code : Tout sélectionner

TASKKILL /IM MonAppli.exe >> C:\Toto.log 2>&1
En gros cette dernière commande redirige le résultat de "TASKKILL /IM MonAppli.exe" vers ton fichier de log, et redirige la stderr vers la stdout. Donc les messages de la stderr vont aussi se retrouver dans ton fichier de log.

Logiquement c'est ça ! Bon courage
Répondre