Batch probleme condition
Résolu/Fermé
Xima
Messages postés
196
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
20 janvier 2011
-
20 août 2008 à 23:57
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 25 août 2008 à 19:00
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 25 août 2008 à 19:00
A voir également:
- Batch probleme condition
- Excel cellule couleur si condition texte - Guide
- Fichier batch - Guide
- Script batch utile ✓ - Forum Programmation
- Condition et excel - Guide
- Input batch - Forum Autoit / batch
4 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
21 août 2008 à 11:37
21 août 2008 à 11:37
Bonjour,
Je ne suis pas certain d'avoir compris le problème, je résume ce que je crois avoir compris :
En fonction de la présence ou de l'absence d'un process en mémoire tu souhaite(rai)s qu'un fichier .bat active (j'aimerais créer un fichier batch qui me permete de lancer des fichiers) ou désactive (et que si on le relance il ferme ces fichiers... ) l'exécution correspondant à ce process.
En d'autres termes, si l'application est en cours d'exécution au moment ou le .bat est exécuté il doit stopper cette exécution, dans le cas contraire il doit lancer l'exécution de cette application. Les deux situations étant pilotées par la variable (%VARIABLE%).
Je ne suis pas certain d'avoir compris le problème, je résume ce que je crois avoir compris :
En fonction de la présence ou de l'absence d'un process en mémoire tu souhaite(rai)s qu'un fichier .bat active (j'aimerais créer un fichier batch qui me permete de lancer des fichiers) ou désactive (et que si on le relance il ferme ces fichiers... ) l'exécution correspondant à ce process.
En d'autres termes, si l'application est en cours d'exécution au moment ou le .bat est exécuté il doit stopper cette exécution, dans le cas contraire il doit lancer l'exécution de cette application. Les deux situations étant pilotées par la variable (%VARIABLE%).
Xima
Messages postés
196
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
20 janvier 2011
30
24 août 2008 à 17:04
24 août 2008 à 17:04
Finalement, ça me va si l'application est tué...
alors je repose ma question :
j'ai un batch qui lance une application
un autre qui la ferme (la tue)
maintenant j'aimerais les mettre ensemble avec un IF :
si l'application est déjà lancé, on la ferme
ou l'inverse
si l'application n'est pas lancé on la lance
j'ai codé ça mais ça ne marche pas :
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"
alors je repose ma question :
j'ai un batch qui lance une application
un autre qui la ferme (la tue)
maintenant j'aimerais les mettre ensemble avec un IF :
si l'application est déjà lancé, on la ferme
ou l'inverse
si l'application n'est pas lancé on la lance
j'ai codé ça mais ça ne marche pas :
pslist | find "app.exe" /C /i > nul if not ERRORLEVEL 1 Goto stop start app.exe exit :stop pskill -t app.exe exit
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
24 août 2008 à 19:58
24 août 2008 à 19:58
Bonjour,
Plutôt qu'extraire les séquences qui t'intéressent, je t'envoie un fichier .bat , un utilitaire que j'ai écrit il y a quelques temps déjà, il affiche:
1) - Les process en cours en répondant 1 au message : Pour afficher la liste tapez 1 sinon tapez 2:
2) - Le process (optionnel) passé en paramètre %1 à l'exécution de ce .bat ex : applirun explorer
(j'ai encadré par 2 lignes d'astérisques la séquence qui devrait t'intéresser plus particulièrement)
--------------------------------------------------------------------------------------------------------------------
Cordialement.
Cchristian.
Plutôt qu'extraire les séquences qui t'intéressent, je t'envoie un fichier .bat , un utilitaire que j'ai écrit il y a quelques temps déjà, il affiche:
1) - Les process en cours en répondant 1 au message : Pour afficher la liste tapez 1 sinon tapez 2:
LISTE DES PROCESS ACTIFS : -------------------------------------------------------------------------- 1 System Idle Process 0 Console 0 28 K 2 System 4 Console 0 84 K 3 smss.exe 772 Console 0 152 K 4 csrss.exe 836 Console 0 2768 K 5 .................. .......................
2) - Le process (optionnel) passé en paramètre %1 à l'exécution de ce .bat ex : applirun explorer
40 explorer.exe 3496 Console 0 26ÿ824 K
(j'ai encadré par 2 lignes d'astérisques la séquence qui devrait t'intéresser plus particulièrement)
--------------------------------------------------------------------------------------------------------------------
@ECHO OFF REM ---------------------------------------------------------------------------- REM applirun BATCH D'IDENTIFICATION DES PROCESS ACTIFS. REM ---------------------------------------------------------------------------- REM Ce batch crée une liste des process actifs puis il effectue une recherche REM dans le contenu de cette liste sur le critère nom du process passé en REM paramètre (%1). REM -------------------------------- REM tasklist : commande inexistante sur Windows XP, elle a été rappatriée dans REM c:\Windows\System32 à partir de: REM http://speedweb1.free.fr/download/utilitaire/tasklist.exe REM ---------------------------------------------------------------------------- @SETLOCAL ENABLEDELAYEDEXPANSION @MODE CON COLS=150 LINES=90 @ECHO. @ECHO. @ECHO %0. @ECHO. @SET "ENVIRON=C:\Documents and Settings\christian\Mes Documents\OUTJOB" @CD %ENVIRON% @SET "cadre= ---------------------------------------------------" @SET "cadre=!cadre!-----------------------" @SET "EXISTE=%1 : PROCESS INACTIF OU INCONNU" @SET /A "nb_process=0" @SET /A "no_process=0" @SET /A "list=0" @IF "%1" == "" ( @SET /A "list=1" ) @IF "%1" == "*" ( @SET /A "list=1" ) @IF "%2" == "*" ( @SET /A "list=1" ) tasklist > listemp.txt rem Numérotation (des lignes) des process actifs. @FOR /F "skip=3 tokens=1-1* delims=:" %%i in (listemp.txt) DO ( @SET /A "no_process+=1" @SET "zero=" @IF !no_process! LSS 10 ( SET "zero= " ) @ECHO !zero!!no_process! %%i >> listproces.txt) rem test de présence (%1) et affichage du (des) process si %1 est renseigné. @IF "%1" == "" ( @ECHO. @ECHO AUCUNE DEMANDE DE RECHERCHE DE PROCESSUS @SET "EXISTE=." ) ELSE ( rem ************************************************************************** @FOR /F "tokens=1-3* delims=:" %%i in ( ' TYPE "listproces.txt" ^| @FINDSTR /I /N %1 ' ) DO ( @ECHO %%j%%k @SET /A "nb_process+=1" @SET "EXISTE=Nb.de process %1 ACTIF(S) !nb_process! / %no_process%" ) ) rem ************************************************************************** @ECHO. @ECHO %EXISTE% @ECHO. rem TEST DEMANDE D'AFFICHAGE (A LA CONSOLE) DE LA LISTE DES PROCESS ACTIFS: IF NOT "%list%" == "1" ( CHOICE /C:12 /N " Pour afficher la liste tapez 1 sinon tapez 2: " IF ERRORLEVEL == 2 ( SET /A "list=2" & GOTO LISTE ) IF ERRORLEVEL == 1 ( SET /A "list=1" ) ) :LISTE @IF "%list%" == "1" ( @ECHO. @ECHO LISTE DES PROCESS ACTIFS : @ECHO %cadre% @FOR /F "tokens=1-1 delims=:" %%i in (listproces.txt) DO ( @ECHO %%i ) @ECHO %cadre% ) @CD %ENVIRON% @IF EXIST "listproces.txt" ( ERASE "listproces.txt" ) @IF EXIST "listemp.txt" ( ERASE "listemp.txt" ) :EOF--
Cordialement.
Cchristian.
Xima
Messages postés
196
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
20 janvier 2011
30
25 août 2008 à 17:58
25 août 2008 à 17:58
merci de ton aide, mais, j'ai trouvé le problème dans mon batch...
j'ai utilisé la commande pslist comme tasklist...
en fait il ne fallait pas mettre
mais simplement:
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"
j'ai utilisé la commande pslist comme tasklist...
en fait il ne fallait pas mettre
pslist | find "app.exe" /C /i > nul
mais simplement:
pslist app
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
25 août 2008 à 19:00
25 août 2008 à 19:00
Bonne continuation,
21 août 2008 à 11:43
et à ce moment là ça ne me sert plus à rien...
merci quand meme
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"
21 août 2008 à 19:15
d'admettre que l'appli en question interroge de façon cyclique une entité externe (par exemple un fichier
présent ou absent) créée par le .bat lorsque l'appli est active. (Un fichier ou une valeur, un flag, présent dans un fichier paramètre par exemple)
-Lancement du .bat
-- Appli active ?
--- oui ==> création du fichier ==> sa présence entraîne l'arrêt de l'appli (interrogation cyclique).
--- non ==> lancement de l'appli .
- En fin d'exécution de l'appli tentative systématique de destruction du fichier quelque soit l'origine du lancement
de l'exécution (par le .bat ou non) et de l'issue de son traitement (fin normale ou fin due à l'interaction relative à l'activation du .bat au cours de l'exécution de l'appli).
Mais c'est lourd ....................
21 août 2008 à 20:01
là ça devient un peu compliqué...
c'est pas grave je fermerais mes application à la souris...
_________________________________________
Vu sur la porte d'un bar : "L'abus de modération, nuit gravement à la consommation"