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

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
Je dois faire un script en .bat qui parcours ce fichier, et copie les fichiers situés dans "dossier1" dans "dossier2".

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
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)*?
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/

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