Bonjour,
pour ma part dans la configuration suivante on sort bien de la boucle par l'etiquette ":suite"
c:\test.bat
Code : Tout sélectionner
@echo off
for /f "tokens=*" %%a in (Contenu.txt) do (
if exist "%%a" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
)
goto suite
)
:suite
pause
c:\Contenu.txt
Résultat avec un fichier présent "c:\abc.txt"
Code : Tout sélectionner
C:\>echo off
instruction 1
instruction 2
instruction 3
instruction 4
Appuyez sur une touche pour continuer...
Résultat sans un fichier présent "c:\abc.txt"
On sort bien dans tout les cas via l'etiquette ":suite", et c'est même un problème dans le sens ou ton batch ne fera jamais plus d'une boucle, car dans tous les cas fichier ou non présent on quittera forcement la boucle.
Pour faire ce que tu décrit il faut juste enlever le goto, dans ce cas une fois que la boucle aura fini de parcourir le fichier contenu.txt il passera tout seul à la :suite.
Voila un exemple de configuration qui je pense répond à ta problématique.
c:\test.bat
Code : Tout sélectionner
@echo on
for /f "tokens=*" %%a in (Contenu.txt) do (
if exist "%%a" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
)
)
pause
c:\Contenu.txt
Exécution avec le fichier c:\abc.txt présent l'affichage du code est activée "@echo on"
Code : Tout sélectionner
C:\>for /F "tokens=*" %%a in (Contenu.txt) do (if exist "%%a" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
C:\>(if exist "c:\abcd.txt" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
C:\>(if exist "c:\abc.txt" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
instruction 1
instruction 2
instruction 3
instruction 4
C:\>pause
Appuyez sur une touche pour continuer...
Exécution sans le fichier c:\abc.txt présent l'affichage du code est activée "@echo on"
Code : Tout sélectionner
C:\>for /F "tokens=*" %%a in (Contenu.txt) do (if exist "%%a" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
C:\>(if exist "c:\abcd.txt" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
C:\>(if exist "c:\abc.txt" (
echo instruction 1
echo instruction 2
echo instruction 3
echo instruction 4
) )
C:\>pause
Appuyez sur une touche pour continuer...
Voila si ça ne fonctionne pas chez toi poste nous le contenu des instructions de ton "if".
Bon courage