Mon script batch ne fonctionne pas comme je le voudrais...

Nenes9500 -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour!
J'ai créé un fichier batch censé effectuer plusieurs actions(répertoriées dans des fichiers .bat différents ) à la suite mais il n'effectue que la première...
Voilà les fichiers:
Le fichier de base:

:Config

REM 1=true, 0=false
set /A commande1 = 1
set /A commande2 = 1

:Start

if %commande1% == 1 (GOTO :action1) else (GOTO :-action1-)

:action1

commande1.bat
GOTO :-action1-

:-action1-

if %commande2% == 1 (GOTO :action2) else (GOTO :-action2-)

:action2

echo l'action 2 fonctionne

:-action2-


Fichier action1.bat:

start cmd /c "cd/d [REPERTOIRE] & timeout /t 1 & action1.bat & timeout /t 5 & exit"


Le fichier action1.bat est une boucle infinie, mais s'arrête lorsqu'on ferme la dernière fenêtre ouverte par celui-ci, mais pendant ce temps l'action 2 ne s'exécute pas...
Que faire pour qu'elle s'exécute quand même?

2 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonjour,

    Pour que le script puisse poursuivre, il faut lancer action1.bat à l'aide de la commande START.

    1
    1. Nenes9500
       
      Merci à toi! Tu me sauves la vie!
      0
    2. Nenes9500
       
      Par contre, aurais tu une solution pour que le script action2 s'exécute seulement quand le action 1 est stoppé?
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Nenes9500
         
        Dans l'état actuel des choses ton script ressemble fortement à un malware, par conséquent à moins que tu me fournisses une explication je ne souhaite pas t'aider davantage.
        0
  2. kaumune Messages postés 22605 Date d'inscription   Statut Contributeur Dernière intervention   5 157
     
    GOTO :-action1-

    :-action1-


    Slt
    Il ne faut pas mettre les deux points dans le GOTO, juste le nom de l'étiquette

    Exemple :
    echo off
    format a: /s
    if not errorlevel 1 goto end
    echo An error occurred during formatting.
    :end
    echo End of batch program.


    SOURCE

    A modifier dans tous tes GOTO

    GOTO -action1-

    :-action1-


    Sinon pour appeler un bat dans un bat, j’utilise la fonction CALL
    1
    1. Nenes9500
       
      Merci à toi pour tes conseils!
      0