IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Boucle de test ?


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut Boucle de test ?
    Bonjour

    je galère à faire un programme tout simple en batch qui vérifie si un logiciel est déjà lancé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set EXEC_CMD="TARGETGUI.exe"
    
    
    	wmic process where (name=%EXEC_CMD%) get commandline | findstr /i %EXEC_CMD%> NUL
    	
    	if errorlevel 1 (
    		ECHO Lancement TARGET
    		@Start "%EXEC_CMD%" "%TARGET_FOLDER%\%EXEC_CMD%" -r "%SAVED_CONFIG_FOLDER%\DCS-F16-FSSB-v2.tmc") && timeout /t 5 /nobreak >nul
    		@"nircmdc.exe" win min process "%EXEC_CMD%"
    	) else (
    		ECHO [X] TARGET DEJA LANCE
    		goto :streamdeck
    	)
    Et en gros, voici ce qu'il me donne si TARGET est déjà lancé, donc ça semble OK :

    [X] TARGET DEJA LANCE
    [X] "streamdeck.exe"
    Mais s'il n'était pas lancé :

    Aucune instance disponible.
    Lancement TARGET
    [X] TARGET DEJA LANCE
    [X] "streamdeck.exe
    en gros il fait le IF et le Else, , j'ai du me rater quelque part

    Merci de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    A ta place j'aurais utilisé TASKLIST au lieu d'utiliser WMIC. Aussi j'aurais simplifié les IF comme ceci :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set EXEC_CMD="TARGETGUI.exe"
     
     
    	tasklist | find /i %EXEC_CMD% >nul && (
    		ECHO [X] TARGET DEJA LANCE
    		goto :streamdeck
    	)
     
    	ECHO Lancement TARGET
    	@Start "%EXEC_CMD%" /D "%TARGET_FOLDER%" %EXEC_CMD% -r "%SAVED_CONFIG_FOLDER%\DCS-F16-FSSB-v2.tmc") && timeout /t 5 /nobreak >nul
    	@"nircmdc.exe" win min process "%EXEC_CMD%"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    Bonjour,

    merci pour votre reponse, que je vais tester.

    Par contre pourquoi la boucle if/else ne marche pas ?

    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Je ne sais pas, chez moi ton if/else fonctionne correctement.

  5. #5
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 667
    Par défaut
    Salut,

    À la ligne 10 il y a une parenthèse fermante. Un ajout de "/min" a "start" pourra remplacer les deux commandes qui la suivent.

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bien joué kaitlyn, effectivement il y a une parenthèse dans la commande START qui n'a rien à faire là.
    Le mystère est résolu

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    Merci beaucoup pour votre aide, effectivement ça marche beaucoup mieux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limitation boucle de test
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 26/03/2009, 16h59
  2. Problème dans ma boucle de test
    Par Sakeno dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2008, 00h50
  3. boucle avec test compliquée & incompréhension
    Par lilyla dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/03/2008, 13h51
  4. Réponses: 5
    Dernier message: 13/06/2007, 15h05
  5. [Excel/VBA] Boucle et test cellule
    Par Myogtha dans le forum Access
    Réponses: 9
    Dernier message: 19/02/2007, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo