[Résolu] Mettre le résultat d'une commande dans une variable

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
TMB

[Résolu] Mettre le résultat d'une commande dans une variable

Message par TMB »

Bonjour à vous,

Je cherche à faire un batch qui vérifie si un programme tiers (par exemple FireFox) est en cours d'exécution sur ma machine Windows et qui le lance si ce n'est pas le cas. Pour ce qui est de vérifier que FireFox tourne, facile (après quelques cheveux en moins :) ) :

Code : Tout sélectionner

TASKLIST /FO TABLE /FI "IMAGENAME eq firefox.exe"
Si FireFox tourne, j'ai

Code : Tout sélectionner

Nom de l'image              PID  Nom de la sessio Numéro d Utilisation
========================= ====== ================ ======== ============
firefox.exe                 2600 Console                 0    79 016 Ko
Sinon

Code : Tout sélectionner

Information : aucune tâche en service ne correspond aux critères spécifiés.
Il faut donc que je traite maintenance ce retour de TASKLIST. Comment puis-je faire pour le mettre dans une variable (par exemple status) puis faire un test sur celle-ci (en la comparant, par exemple à une autre variable MessageErreur) ? Une simple redirection de TASKLIST du genre

Code : Tout sélectionner

set MessageErreur=Information : aucune tâche en service ne correspond aux critères spécifiés.
set status=Rien avant traitement
TASKLIST /FO TABLE /FI "IMAGENAME eq firefox.exe" > status
rem IF %status% == %MessageErreur% start blablabla
ne fonctionne pas puisque le batch me créé alors un fichier du nom de status (qui n'a rien à voir avec ma variable).
Bien sûr, je peux toujours chercher la phrase "Information : aucune tâche en service ne correspond aux critères spécifiés." dans le fichier status puis le supprimer, mais c'est pas très gracieux (plus de mémoire, plus de CPU, plus d'accès disque...).

Par ailleurs, j'ai regardé si la variable %ERRORLEVEL% pouvait m'apporter quelque chose (traiter son code à elle plutôt que le retour texte de TASKLIST) mais l'un ou l'autre résultat de TASKLIST ne semble pas l'affecter (toujours égale à 0).

Je repose donc ma question, comment puis-je faire pour que le résultat de ma commande TASKLIST soit dans une variable ?

Merci beaucoup et longue vie à batcher.fr !
TMB
TMB

Re: Mettre le résultat d'une commande DOS dans une variable ?

Message par TMB »

Vu sur http://forum.hardware.fr/hfr/Programmat ... 1543_1.htm

Code : Tout sélectionner

set status =""
set LaCommande=TASKLIST /NH /FI "IMAGENAME eq firefox.exe"
for /f "delims=" %%a in ('%LaCommande%') do set status=%%a 
echo %status%
Note 1 : Pour des raisons de lisibilité, j'ai isolé le commande TASKLIST dans une autre variable.
Note 2 : J'ai changé les options d'affichages de TASKLIST mais ça ne change rien au final (/FO TABLE => /NH), voir tasklist /?
Pour plus de détails et autres problèmes, voir le lien en début de post.
Bon WE
TMB :D
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Mettre le résultat d'une commande DOS dans une variable ?

Message par flox »

Bonjour,

sinon le problème que tu expose à déjà été traité sur le forum ici, si sa peut t'apporter des informations complémentaires.



@+
Répondre