Copie de fichier dans des sous répertoires aléatoires multiples

Copie de fichier dans des sous répertoires aléatoires multiples - Shell/Batch - Programmation

Marsh Posté le 15-07-2016 à 14:21:02    

Bonjour,
J'ai besoin de réaliser la copie de fichiers dans une arborescence de type :
srvvdl1\Esp_transvers\Espace_associations\zOPAL2\*\En_cours\*\
 
Avec un répertoire racine, qui contiens plusieurs sous répertoires et dans lequel je ne doit prendre que le contenue des répertoires "En_cours" avec eux mêmes différents sous répertoires.
 
Je pensais qu'avec une commande de type :
Set Bodi_RepIN=\\srvvdl1\Esp_transvers\Espace_associations\zOPAL2\*\En_cours\*\
Puis :
Set Bodi_Fic=opal_*_*_*.xls
Set Bodi_Stage_Input=\stage\input
 
for /d %%X in (%Bodi_RepIN%) do for /d %%Y in (%%X\en_cours\*) do (
Pushd %%Y  
for /r %%F in (%Bodi_Fic%) do (
 copy /Y %%F %Bodi_Stage_input%
 set /A RC+=%ERRORLEVEL%
 )
popd
)
 
Cela passerait, mais je n'ai aucun fichier qui se copie.
 
 
Quelqu'un aurait une idée?
 
D'avance merci.

Reply

Marsh Posté le 15-07-2016 à 14:21:02   

Reply

Marsh Posté le 16-07-2016 à 02:35:40    

Je ne connais pas pushd/popd et je pense qu'il n'y en a pas besoin. Aussi il semble qu'une seule étoile soit autorisée dans le for. (???)

 

Voici un code test qui semble fonctionner:

Code :
  1. cls
  2. echo on
  3. set Bodi_RepIN=zOPAL2\*
  4. Set Bodi_Fic=opal_*_*_*.xls
  5. Set Bodi_Stage_Input=stage\input
  6. for /d %%X in (%Bodi_RepIN%) do (
  7.     for /d %%Y in (%%X\en_cours\*) do (
  8.         echo in %%Y
  9.         copy %%Y\%Bodi_Fic% %Bodi_Stage_Input%
  10.     )
  11. )
 

avec l'arborescence

Code :
  1. dossier_test\stage
  2. dossier_test\test.bat
  3. dossier_test\zOPAL2
  4. dossier_test\stage\input
  5. dossier_test\zOPAL2\dossier1
  6. dossier_test\zOPAL2\dossier2
  7. dossier_test\zOPAL2\dossier1\en_cours
  8. dossier_test\zOPAL2\dossier1\opal_9_9_91.xls
  9. dossier_test\zOPAL2\dossier1\en_cours\doss1
  10. dossier_test\zOPAL2\dossier1\en_cours\doss2
  11. dossier_test\zOPAL2\dossier1\en_cours\doss3
  12. dossier_test\zOPAL2\dossier1\en_cours\doss1\opal_1_1_1.xls
  13. dossier_test\zOPAL2\dossier1\en_cours\doss1\opal_1_1_2.xls
  14. dossier_test\zOPAL2\dossier1\en_cours\doss2\opal_1_2_1.xls
  15. dossier_test\zOPAL2\dossier1\en_cours\doss2\opal_1_2_2.xls
  16. dossier_test\zOPAL2\dossier1\en_cours\doss3\opal_1_3_1.xls
  17. dossier_test\zOPAL2\dossier1\en_cours\doss3\opal_1_3_2.xls
  18. dossier_test\zOPAL2\dossier2\en_cours
  19. dossier_test\zOPAL2\dossier2\opal_9_9_92.xls
  20. dossier_test\zOPAL2\dossier2\en_cours\doss1
  21. dossier_test\zOPAL2\dossier2\en_cours\doss2
  22. dossier_test\zOPAL2\dossier2\en_cours\doss1\opal_2_1_1.xls
  23. dossier_test\zOPAL2\dossier2\en_cours\doss1\opal_2_1_2.xls
  24. dossier_test\zOPAL2\dossier2\en_cours\doss2\opal_2_2_1.xls
  25. dossier_test\zOPAL2\dossier2\en_cours\doss2\opal_2_2_2.xls
 

Le code se trouve dans test.bat. Les fichiers opal avec des 9 ne sont PAS copiés, c'est justement pour tester.

 

À adapter à tes besoins.


Message édité par rat de combat le 16-07-2016 à 02:37:09
Reply

Marsh Posté le 18-07-2016 à 10:24:42    

Le script test.bat se trouve sur \\srvetl1\D$\VDL\Scripts.
 
Du coup, il ne va pas chercher au bon endroit.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed