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 :
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
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
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.
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
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.
Partager