Bonjour le people,

J'aimerais pouvoir copier des fichiers(.txt) d'un dossier et de tout les sous dossier tout en les renommant.

Pour l'instant j'arrive seulement à copier et renommer(je leur ajoute la date de copie) les fichiers du dossier courant sans prendre en compte les sous-dossiers et leur contenu.
Mon code effectue également un contrôle pour voir si des nouveaux fichiers et des modifications de fichiers ont été faites pour copier chaque fichier qu'une seul fois.
Voici mon code :

Code Batch : 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
42
43
44
45
46
47
48
echo off
::Recuperation de l'annee, mois, jour, heure, minute, seconde
SET ANNEE=%DATE:~6,4%
SET MOIS=%DATE:~3,2%
SET JOUR=%DATE:~0,2%
SET HEURE=%TIME:~0,2%
SET MINUTE=%TIME:~3,2%
SET SECONDE=%TIME:~6,2%
SET SEPARATION=_
    ::si l'heure est inférieure a 10 alors ajouter un 0 devant
if %HEURE% lss 10 set HEURE=0%time:~1,1%
 
::Concacter la date 
SET FULLTIME=%ANNEE%%SEPARATION%%MOIS%%SEPARATION%%JOUR%%SEPARATION%%HEURE%%MINUTE%%SECONDE%
 
::chemin des differents dossier
 
SET DIRIN1=C:\cheminDossier1\
SET DIRIN2=C:\cheminDossier2\
SET DIRF=C:\cheminduDossierLog\f-file.txt
 
cd %DIRIN1%
::boucle qui parcourt tout les fichiers du dossier
for %%i in (%DIRIN1%\*.*) do (
 
	call :copieName %%~nxi
)
pause	
 
:copieName
SET name=%1
::test l'existance du fichier
If exist "%DIRIN1%%name%" (
	::copie le fichier et presse f	
	xcopy %DIRIN1%%name% %DIRIN2%%FULLTIME%%SEPARATION%%name% /M < %DIRF%
	CALL:writeLog %ERRORLEVEL%
	)
goto :eof
 
:writeLog
::ecriture du retour de la commande xcopy dans les log 
ECHO. >> C:\cheminduDossierLog\log_%FULLTIME%.txt
IF %1==0 ( ECHO %FULLTIME% - %name% Pas d'erreur %1  >>C:\cheminduDossierLog\log_%FULLTIME%.txt )
IF %1==1 ( ECHO %FULLTIME% - %name% erreur %1 - Aucun fichier à copier n'a été trouvé >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
IF %1==2 ( ECHO %FULLTIME% - %name% erreur %1 - Opération annulée par l'utilisateur >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
IF %1==4 ( ECHO %FULLTIME% - %name% erreur %1 - Erreurs diverses comme manque de mémoire, espace disque insuffisant, nom de lecteur invalide ou syntaxe incorrecte >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
IF %1==5 ( ECHO %FULLTIME% - %name% erreur %1 - Une erreur d'écriture disque est survenue >> C:\cheminduDossierLog\log_%FULLTIME%.txt)
GOTO :eof

Quelqu'un a une idée pour m'aider ? Je vous remercie d'avance