Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1084 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BAT] Comment forcer l'exécution au sein d'une boucle ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BAT] Comment forcer l'exécution au sein d'une boucle ?

n°2257359
bigstyle
Posté le 05-05-2015 à 09:56:37  profilanswer
 

Bonjour,
 
j'aurai une question liée à la logique d'exécution dans un fichier BAT.
 
Voici le script me permettant de récupérer la liste des lecteurs et d'exécuter un "DIR" pour chaque lecteur et le consolider dans un fichier global.

Code :
  1. @echo off
  2.       setlocal enabledelayedexpansion
  3.       WMIC LOGICALDISK where drivetype=3 get caption>%~n0.tmp
  4.       for /f "tokens=1-3 skip=1" %%a in ('type "%~n0.tmp"') do call :displayinfo %%a
  5.     del "%~n0.tmp"
  6.     echo FIN DU SCRIPT AVANT LE EOF
  7.     goto :etapefin
  8.     :displayinfo
  9.     set drive=%1
  10.     echo Le drive est %drive%
  11.     echo lancement du DIR
  12.     REM call dir /A HS /s /b %drive%\ >> d:\Dir_ALL.txt
  13.     echo Fin du DIR
  14.     :etape2
  15.     echo voici l'etape 2
  16.     echo blablalblablalballbabal
  17.     :etapefin
  18.     echo voici letape fin apres la boucle
  19.     @pause
  20.     @exit
  21.     @pause


 
 
Ce que j'aimerai est que le "call displayinfo" se fasse uniquement sur la partie ":displayinfo" mais que la partie "etape 2" et le reste du script ne soient pas inclus dans la boucle qui fait le "do call displayinfo".
 
Est-ce que quelqu'un aurait une idée de comment indiquer la fin de l'exécution d'une boucle en bat ?  
 
Merci

mood
Publicité
Posté le 05-05-2015 à 09:56:37  profilanswer
 

n°2257372
rat de com​bat
attention rongeur méchant!
Posté le 05-05-2015 à 10:13:38  profilanswer
 

fait très rapidement mais ça a l'air de marcher: goto :EOF
 

Code :
  1. @echo off
  2. for /f %%a in (file.txt) do call :process %%a
  3. echo fin
  4. goto :EOF
  5. echo err1
  6. :process
  7. echo %1
  8. goto :EOF
  9. echo err2


 

Code :
  1. >type file.txt
  2. line1
  3. line2
  4. line3


 

Code :
  1. >test.bat
  2. line1
  3. line2
  4. line3
  5. fin

n°2257377
bigstyle
Posté le 05-05-2015 à 10:21:13  profilanswer
 

Merci pour ta réponse; je me sens moins seul :D
 
J'avais essayé avec un :EOF mais ca n'avait rien changé.  
En fait, mon problème est que j'aimerai que la boucle du FOR /f se fasse sur une partie limitée du script et qu'ensuite je puisse passer à l'"étape2" sans que cette étape ne soit incluse dans la boucle.
 
Voilà mon script un peu plus lisible
 

Code :
  1. @echo off
  2.   setlocal enabledelayedexpansion
  3.   WMIC LOGICALDISK where drivetype=3 get caption>%~n0.tmp
  4.   for /f "tokens=1-3 skip=1" %%a in ('type "%~n0.tmp"') do call :displayinfo %%a
  5. del "%~n0.tmp"
  6. echo FIN DU SCRIPT AVANT LE EOF
  7. goto :eof
  8. :displayinfo
  9. set drive=%1
  10. echo Le drive est %drive%
  11. echo lancement du DIR
  12. REM call dir /A HS /s /b %drive%\ >> d:\Dir_ALL.txt
  13. echo Fin du DIR
  14. :etape2
  15. echo voici l'etape 2
  16. echo blablalblablalballbabal
  17. :etapefin
  18. echo voici letape fin apres la boucle
  19. @pause

n°2257400
rat de com​bat
attention rongeur méchant!
Posté le 05-05-2015 à 15:52:33  profilanswer
 

Tu veux que quand : displayinfo est appellé depuis la boucle le script retourne dans la boucle ligne 17 au lieu de continuer et d'exécuter :etape2, c'est bien ça? Alors un goto :EOF (majuscules peut-être importantes, à voir) ligne 17 devrait fonctionner? Ou ai-je mal compris?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BAT] Comment forcer l'exécution au sein d'une boucle ?

 

Sujets relatifs
Lire une variable contenu dans un fichier durant une boucle ?Condition sur une boucle for
Execution d'une partie du scriptExécution d'un script via un autre script
Problème de sortie d'une boucle while en PYTHONprobleme de msgbox dans une boucle
forcer l'acceptation d’éléments flash dans internet explorerBoucle while avec fwrite
Ordre aléatoire d'exécution + duplication traitement d'un BAT 
Plus de sujets relatifs à : [BAT] Comment forcer l'exécution au sein d'une boucle ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR