Batch probleme condition
Résolu
Xima
Messages postés
196
Date d'inscription
Statut
Membre
Dernière intervention
-
cchristian Messages postés 921 Date d'inscription Statut Membre Dernière intervention -
cchristian Messages postés 921 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais créer un fichier batch qui me permete de lancer des fichiers, et que si on le relance il ferme ces fichiers...
mais je n'arrive pas à créer la condition
if (not?)"%VARIABLE%"=="..." goto stop
je ne sais pas comment crééer la condition : "si la variable est ouvert, goto stop" ou "si la variable n'est pas fermée, goto stop"
en sachant que la variable et une application
merci de votre aide
j'aimerais créer un fichier batch qui me permete de lancer des fichiers, et que si on le relance il ferme ces fichiers...
mais je n'arrive pas à créer la condition
if (not?)"%VARIABLE%"=="..." goto stop
je ne sais pas comment crééer la condition : "si la variable est ouvert, goto stop" ou "si la variable n'est pas fermée, goto stop"
en sachant que la variable et une application
merci de votre aide
A voir également:
- Batch probleme condition
- Excel cellule couleur si condition texte - Guide
- Fichier batch - Guide
- Excel condition ou - Guide
- Batch converter - Télécharger - Photo & Graphisme
- Echo off batch ✓ - Forum Autoit / batch
4 réponses
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%).
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"
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.
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"
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"
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 ....................
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"