Faire une pause dans l'exécution de mon batch

Bonjour,

Alors j'ai encore un problème dans ma ligne de code, je pose mon sujet avec un titre plus approprié.

@echo off
cls

MD "C:\WINDOWS\SYSTEM32\TEST" 'Ceci crée le répertoire / dossier TEST.

FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST" Ceci déplace mspaintboucle.bat qui est ce batch ci à l'intérieur du répertoire crée

echo "@echo off">nouveau.bat
echo cls>>nouveau.bat
echo start mspaint>>nouveau.bat  Ceci aura pour conséquence de me crée le fichier "nouveau.bat" qui exécutera en boucle mspaint avec la ligne suivante

:boucle
start C:\WINDOWS\SYSTEM32\TEST\nouveau.bat
goto boucle


PAUSE


Or, mon problème est que le programme crée le répertoire "TEST", déplace le mspaintboucle.bat qui l'a crée (le répertoire TEST)l, mais il faut que j'aille dans "C:\WINDOWS\SYSTEM32\TEST\" pour re-cliquer sur le mspaintboucle.bat pour exécuter ca:

echo "@echo off">nouveau.bat
echo cls>>nouveau.bat
echo start mspaint>>nouveau.bat  Ceci aura pour conséquence de me crée le fichier "nouveau" qui exécutera en boucle mspaint avec la ligne suivante

:boucle
start C:\WINDOWS\SYSTEM32\TEST\nouveau.bat
goto boucle


Car il n'aura pas crée le "nouveau.bat" mais en re-cliquant dessus cela le créera et engagera la boucle.
Mon problème est que je dois cliquer 2 fois sur le mspaintboucle.bat, la première sur mon bureau et la deuxième dans le répertoire qu'il a crée pour pouvoir créer "nouveau.bat"et le faire en boucle, j'aimerai éviter le double clic et qu'il s'exécute d'un seul clic. Est-ce que c'est parce que "nouveau.bat" n'a pas le temps de se crée alors l'application se termine avant de pouvoir le créer? Et donc si c'est bien le cas, j aimerai savoir comment faire une pause entre la création de "nouveau.bat" et la boucle pour qu'il ait le temps de se créer, ou si c'est une erreur dans mon code qui fait que c'est impossible à réaliser? Dans ce cas de l'aide serait la bienvenue.
Configuration: Windows XP
Firefox 2.0.0.14

13 réponses

  1. Bas écoute, si je lance le fichier, et que je vais dans le répertoire créé, et que je reclique dessus, ca marche. Faut cliquer 2 fois dessus donc... Et c'est ce que j aimerai éviter.
    1. Contributeur
      rien ne lance mspaint ?
      as tu au moins testé que cette commande suffisait, que mspaint est bien dans le PATH ?
      1. écoute, ca ne marche toujours pas, le répertoire est crée le .bat qui contient le code, se déplace dedans, mais rien ne déclenche mspaint, j'ai même essayer de cd/call le nouveau.bat mais rien, c'est un truc tellement simple que ca me casse la tête...
        1. Contributeur
          @echo off
          cls
          
          MD "C:\WINDOWS\SYSTEM32\TEST" 'Ceci crée le répertoire / dossier TEST.
          
          FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST" Ceci déplace mspaintboucle.bat qui est ce batch ci à l'intérieur du répertoire crée
          cd C:\WINDOWS\SYSTEM32\TEST\
          call "C:\WINDOWS\SYSTEM32\TEST\mspaintboucle.bat"
          
          echo "@echo off">nouveau.bat
          echo cls>>nouveau.bat
          echo start mspaint>>nouveau.bat  Ceci aura pour conséquence de me crée le fichier "nouveau.bat" qui exécutera en boucle mspaint avec la ligne suivante
          
          :boucle
          start C:\WINDOWS\SYSTEM32\TEST\nouveau.bat
          goto boucle
          
          
          PAUSE
          
          --
          Salutation !
          Char Snipeur
          1. Mon répertoire est crée dans C:\WINDOWS\system32\TEST afin que je puisse le lancer avec la fonction "start", et mon fichier se crée à l'intérieur de celui ci.
            1. Contributeur
              Non, X doit être en seconde.
              Je ne pense pas que ce soit un problème de temps ! L'exécution d'un script est toujours séquentielle, et tes fichiers sont tout petit.
              Ton nouveau.bat, tu le cré où ?
              C'est normal que ça ne fonctionne pas, tu ne respecte pas le répertoire courant le PATH etc.
              1. echo off
                cls
                
                MD "C:\WINDOWS\SYSTEM32\TEST"
                
                FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST"
                
                set /A heurfin=%time:~6,2%+X
                :start
                set /a heur=%time:~6,2%
                set /a temprestant=%heurfin%-%heur%
                if "%heurfin%"=="%heur%" goto finpause
                goto start
                :finpause
                
                echo "@echo off">shutdown.bat
                echo cls>>shutdown.bat
                echo shutdown -s>shutdown.bat
                echo PAUSE>shutdown.bat
                
                set /A heurfin=%time:~6,2%+X
                :start
                set /a heur=%time:~6,2%
                set /a temprestant=%heurfin%-%heur%
                if "%heurfin%"=="%heur%" goto finpause
                goto start
                :finpause
                
                :boucle
                start C:\WINDOWS\SYSTEM32\TEST\shutdown.bat
                goto boucle
                
                
                PAUSE


                J'ai fais comme ca, mais ca ne marche pas, elle est ou l'erreur?
                1. puree des goto ... me manque les go sub et ce sera complet
                  ... ca me rappelle mes premieres heures d'informatique...
                  celles d'avant windows 95, ou le DOS 5.0 etait une reference et 6.1 une daube, sauf le dblspace.exe

                  lol
                  1. bon allezz.... tiens:
                    set /A heurfin=%time:~6,2%+X
                    :start
                    set /a heur=%time:~6,2%
                    set /a temprestant=%heurfin%-%heur%
                    if "%heurfin%"=="%heur%" goto finpause
                    goto start
                    :finpause
                    1. oui, il a l' air à peu près juste, pour le Timer, cherche un peu, je te donne la réponse dans 10 minutes :)
                      1. Oui en gros, mais est-ce que mon code est juste? Or mis le timer?
                        1. mettre un timer???
                          c est possible dans tous les langages il me semble
                          faudrait ressortir mon bouquin DOS ;o))