Bonjour,
Etant un total débutant en batch, je galère grave sur un truc à priori tout simple !
Mon besoin : j'ai un fichier .txt qui liste l'ensemble des fichiers que je dois copier d'un répertoire vers un autre.
Le contenu de ce fichier est du type
Je dois faire un script en .bat qui parcours ce fichier, et copie les fichiers situés dans "dossier1" dans "dossier2".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 /data/disque/100/100111/tata.txt /data/disque/800/800123/toto.txt
Les dossiers "dossier1", "dossier2" ainsi que le script .bat en question sont situés dans le même dossier.
Je parcours donc ce fichier, manipule la ligne pour enlever "/data/" car elle m'est inutile.
L'arborescence dans dossier1 est la suivante : /dossier1/disque (c'est pour cela que j'ai enlevé le /data/).
Mon problème est le suivant : pour l'instant dans dossier2, c'est totalement vide, du coup pour la copie j'utilise XCOPY afin que ça me créé aussi les sous dossiers car je veux la même arborescence.
Le problème c'est que quand je fais xcopy "%source%" "%cible%" /E /F /Y , ça me pose la question
Du coup, en fait il faudrait que dans la commande XCOPY dans la variable cible, je ne passe que le nom du répertoire sans le nom de fichier, mais je n'arrive pas à le récupérer ! Je voudrais que CIBLE = /dossier2/disque/100/100111/Est-ce que D:\test\dossier2\disque\100\100111\tata.txt désigne un nom de fichier
ou un nom de répertoire de la destination
(F = fichier, R = répertoire)*?
Je n'arrive pas à comprendre comment arriver à dégager le fichu nom du fichier !
Ci dessous, mon code qui ne fonctionne donc pas exactement comme je veux !
Quelqu'un aurait-il une idée de comment je dois faire ? C'est peut etre pas la meilleure façon de faire, si une solution plus facile existe faite signe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 REM Script de copie des fichiers à partir d'une liste @echo off echo Debut de la copie set nomFichierList=%1 set repertoireSource=%2 set repertoireCible=%3 rem Parcours de la liste des fichiers echo Debut deplacement fichier FOR /f %%i IN (%nomFichierList%) DO ( call :moveFile %%i ) echo Fin deplacement fichier goto END rem ############################################################ rem ### Fonctions utilisees #### rem ############################################################ rem #### Debut move File :moveFile set fichier=%1 set fichierCourt=%fichier:/data/=% set source=%repertoireSource%/%fichierCourt% set cible=%repertoireCible%/%fichierCourt% echo Cible avant %cible% rem il faudrait enlever le nom du fichier de la variable cible xcopy "%source%" "%cible%" /E /F /Y GOTO :eof rem #### Fin moveFile :END pause exit
Partager