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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [batch] copie d'un dossier + de ses fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[batch] copie d'un dossier + de ses fichiers

n°1531431
baobazz
Posté le 21-03-2007 à 09:50:32  profilanswer
 

Bonjour,
 
A premier abord, ma question paraît simple mais voilà ma constatatio: si je fais
 

Code :
  1. xcopy /dossier1 /dossier2


 
avec dossier1 contenant les fichiers F[1.1=>1.n]
 
les fichiers contenus dans dossier1 seront copiés dans dossier2...
j'aurai donc /dossier2/F[1.1=>1.n]
 
seulement, je souhaite copier également le dossier 1; je veux avoir:
/dossier2/dossier1/F[1.1=>1.n]

mood
Publicité
Posté le 21-03-2007 à 09:50:32  profilanswer
 

n°1531491
blastkille​r
Posté le 21-03-2007 à 10:59:59  profilanswer
 

xcopy \dossier1 \dossier2\dossier1

n°1531654
baobazz
Posté le 21-03-2007 à 15:22:52  profilanswer
 

merci beaucoup mais en fait, mon script récupère tous les noms de dossiers qu'il doit copier depuis un fichier texte. Il récupère des chemins tels que:
D1\D1.1\D1.1\D1.1.1
D2\D2.1
D3\D3.1\D3.1.1
 
ainsi il va y avoir des problèmes si j'effectue la copie vers le dossier de destination
car si je fais xcopy D1\D1.1\D1.1\D1.1.1 destination\
Il ne me copiera pas le répertoire D1.1.1  
pour celil faudrait que je fasse  
xcopy D1\D1.1\D1.1\D1.1.1 destination\D1.1.1
ce qui impliquerait que j'arrive à retirer du chemin D1\D1.1\D1.1\D1.1.1 le dernier élément délimité par "\", soit D1.1.1.
Bref, je ne vois vraiment pas comment faire...
Si vous avez des idées, je suis preneur.

n°1531666
wackevat
Posté le 21-03-2007 à 15:33:38  profilanswer
 

baobazz a écrit :

ce qui impliquerait que j'arrive à retirer du chemin D1\D1.1\D1.1\D1.1.1 le dernier élément délimité par "\", soit D1.1.1.


Petit test :

Code :
  1. call :getParent "D1\D1.1\D1.1\D1.1.1"
  2. goto :eof
  3. :getParent
  4. echo %~nx1
  5. goto :eof

n°1531735
baobazz
Posté le 21-03-2007 à 16:49:26  profilanswer
 

bonjour nglechau et merci pour ta réponse!
en fait, mon batch est le suivant pour l'instant, prenant en compte tes conseils:

Code :
  1. for /f "eol=; tokens=1 delims=," %%a in (liste_dossiers.txt) do (
  2. echo copie de %%a
  3. set dossier_source=%%a
  4. call :getParent %%a
  5. :copie
  6. echo dossier cible1=%dossier_cible%
  7. xcopy "\\%serveur_bureautique%\%dossier_source%" "%dossier_local%\%dossier_cible%"
  8. goto fin
  9. :getParent
  10. set dossier_cible=%~nx1
  11. goto copie
  12. :fin
  13. echo copie OK
  14. )
  15. pause


le problème est que ça ne le fait que pour le premier dossier...
pourtant, je suis certain d'y être presque!

n°1531747
wackevat
Posté le 21-03-2007 à 16:59:52  profilanswer
 

Le probleme vient de ton :
set dossier_source=%%a
 
dans une boucle for. Tu peux lire l'aide de set
set /?
pour le paragraphe concernant l'expansion retardee des variables.
 
Tu pourrais a mon avis passer carrement %%a en argument d'une procedure qui fait et l'extraction du nom du dossier et la copie.
 

Code :
  1. for ... %%a in ... do (
  2.   call :copie "%%a"
  3. )
  4. goto :suivant
  5. :copie
  6. xcopy "\\%serveur_bureautique%\%~1" "%dossier_local%\%~nx1"
  7. goto :eof
  8. :suivant

n°1531809
baobazz
Posté le 21-03-2007 à 18:28:01  profilanswer
 

merci nglechau!
Tu m'as bien aidé. Ca marche.
Pour ceux que ça intéresse, here is the final code:

Code :
  1. for /f "eol=; tokens=1 delims=," %%a in (liste_dossiers.txt) do (
  2. rem c'est les bordures
  3. echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
  4. echo Copie de %%a
  5. echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
  6. call :copie "%%a"
  7. )
  8. goto :suivant
  9. :copie
  10. rem je valide la copie du répertoire: d'où le echo R
  11. echo R|xcopy /S "\\%serveur_bureautique%\%~1" "%dossier_local%\%~nx1"
  12. echo.
  13. goto :eof
  14. :suivant
  15. echo.
  16. pause


 
merci beaucoup!


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

  [batch] copie d'un dossier + de ses fichiers

 

Sujets relatifs
batch scanning à double incrémnt de nom de fich (possible en PYTHON ?Batch pour arrêter vista
Aide pour un batch Mingwbatch - ajouter un mot de passe a une session
[Win32] Ouverture de plusieurs fichiersacces dossier que via URL avec régles précises de formatage
[Cobol] Test de robustesse traitements batchAnalyser des fichiers de CAO au format STEP et IGES
Parser des fichiers de CAO au format STEP et IGESbatch pour comparer
Plus de sujets relatifs à : [batch] copie d'un dossier + de ses fichiers


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