ajouter la date de dernière modification au nom du fichier
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:
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:
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.