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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] 2 boucles FOR imbriquées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH] 2 boucles FOR imbriquées

n°2115686
boullette3​8
Posté le 09-12-2011 à 09:53:51  profilanswer
 

Bonjour,
je débute en batch et j'ai un soucis avec mon code.
Voici le but du programme: j'ai un répertoire qui contient plusieurs dossiers. Dans chacun de ces dossiers se trouvent plusieurs fichiers présent à la racine ou dans des sous-dossiers. Le but de mon batch est de mettre à la racine tous les fichiers présent dans un dossier (le mettre en plat en fait), et ça pour chacun des dossiers.

 

Schématiquement, ça donne ça:
AVANT:
répertoire>dossier1>toto.txt
répertoire>dossier1>sousDossier1>titi.dat
répertoire>dossier1>sousDossier2>tutu.txt
répertoire>dossier2>popo.dat
répertoire>dossier2>sousDossier1>pipi.txt
répertoire>dossier2>sousDossier2>pupu.txt

 

APRES
répertoire>dossier1>toto.txt
répertoire>dossier1>titi.dat
répertoire>dossier1>tutu.txt
répertoire>dossier2>popo.dat
répertoire>dossier2>pipi.txt
répertoire>dossier2>pupu.dat

 


Voici mon code (incomplet):
set repFW=%CD%\repertoire\                                                    >> je définis en dynamique où se trouve mon dossier "repertoire"
FOR /F "skip=7 tokens=4 delims= " %%i IN ('dir "%repFW%*."') DO ( >> pour chaque dossiers présent dans "repertoire" je récupère le nom
 IF %%i NEQ octets  (                                                              >> si le nom est différent de "octets" (la commande dir renvoie octets à la fin...)
  set a=%repFW%%%i                                                              >> je définis "a" comme le chemin du dossier que je veux remettre à plat
  set b=%repFW%%%iTemp                                                      >> je définis "b" comme un dossier temporaire
  mkdir %b%                                                                           >> je crée le dossier temporaire
  FOR /R %a% %%j IN (*.*) DO (                                               >> pour chaque fichiers présent dans "a"
   xcopy %%j %b%                                                                  >> je les copie dans "b"
  )
 )
)
pause

 

Le problème vient que le 2ieme boucle fonctionne mal car il ne me récupère pas que les fichiers d'un seul dossier (dans mon exemple: dossier1 ou dossier2) mais de plusieurs dossiers.
Après je pense qu'on peut optimiser mon code car il doit pas être des plus simples... je suis sous XP.

 

J'espère que je me suis fait comprendre... Si quelqu'un passe par la, c'est cool.
merci.


Message édité par boullette38 le 09-12-2011 à 09:55:04
mood
Publicité
Posté le 09-12-2011 à 09:53:51  profilanswer
 


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

  [BATCH] 2 boucles FOR imbriquées

 

Sujets relatifs
[BATCH] Passer une commande en argument à l'appel de cmd.exe[BATCH] Afficher le contenu d'un sous dossier
[BATCH?] Ouvrir un exe a une position spécifique [RESOLU][resolu] batch ne dépasse pas la première ligne
[Batch] Lancer une ligne de commande avec des paramètres[BATCH] récupération taille total disque
[BATCH] XCOPY + Shutdown[R][Script/Batch]Install silencieuse d'Interwrite v8.91 sur postes ..
[BATCH] Copier l'interieur d'un txt[batch DOS] boucles FOR imbriquées
Plus de sujets relatifs à : [BATCH] 2 boucles FOR imbriquées


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