Bonjour,

Je début en Batch donc mes connaissances sont assez limiter.

Mon objectif est de copier plusieurs fichiers .txt d’un dossier vers un autre.

Dans le dossier destination je voudrais ajouter la date de dernier modification en écriture au début du nom du fichier.

Donc dossier source :
Toto.txt
Tata.txt

Dossier destination :

21025024Toto.txt
21024015Tata.txt

En parcourant plusieurs forum j’ai réussi à écrire ceci :

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
 
@echo off & setlocal enabledelayedexpansion enableextensions
 
for %%x in (*.txt.*) do (
 
dir /TW %%x  | find "/" > tmp.txt

SET datetmp=
set reverse=

call :PROCESS
set reverse

copy "%%~nxx" "C:\Documents and Settings\dhumiere\Mes documents\Gestion de logs\Batch\test2\%reverse%%%~nxx" 
)

pause & endlocal & goto:eof
 
:PROCESS

FOR /F "tokens=1-4 delims= " %%i in (tmp.txt) do set datetmp=%%i 
SET datetmp=%datetmp:/=%
call :reverse "%datetmp%"
del tmp.txt

:reverse
for /f "tokens=1* delims=:" %%a in ('
    "%comspec% /u /c echo:%~1|more|findstr /o ."
 ') do set "reverse=%%b!reverse!"
goto:eof
En se centrant sur le déplacement j’ai utilisé ceci (qui fonctionne) :

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
 
@echo off & setlocal enabledelayedexpansion enableextensions

SET _VAR=%date%

SET _VAR=%_VAR:/=%
 
call :reverse "%_VAR%"

set reverse 

for %%x in (*.txt.*) do (
copy "%%~nxx" "C:\Documents and Settings\dhumiere\Mes documents\Gestion de logs\Batch\test2\%reverse%%%~nxx"
 )
 
pause & endlocal & goto:eof
 
:reverse
for /f "tokens=1* delims=:" %%a in ('
    "%comspec% /u /c echo:%~1|more|findstr /o ."
 ') do set "reverse=%%b!reverse!"
goto:eof
Mais dès que je déplace le call :reverse "%_VAR%" dans la boucle for la date n’est plus ajouter au début du fichier.

J’espère avoir été claire et si quelque saurais me dire pourquoi ou comment contourner le problème sa m’aiderais beaucoup.

Merci d’avance.