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
| @echo off
REM Utilisation de variables locales, pour ne pas pourrir l'environnement.
setlocal
REM Passage dans le répertoire à traiter.
pushd "toto\tata\titi\"
REM Parcours de tous les fichiers, inconditionnellement, mais on pourrait mettre
REM aussi "dir /b *.xls" s'il n'y a bien QUE cette extension.
for /f "usebackq tokens=1-3* delims=-" %%I in (`dir /b`) do call :process %%I %%J %%K %%L
REM Fini.
popd
endlocal
goto :eof
REM Sous-programme de traitement : prends 4 arguments, séparés par le "for" appelant.
REM %1 : Premier token, qui deviendra le répertoire.
REM %2 : Deuxième token, la date.
REM %3 : Troisième token, la fin du nom.
REM %4 : Quatrième token : juste au cas où il y aurait un "-" dans le nom de fichier... Optionnel.
:process
REM Si le nom de fichier ne correspond pas au pattern attendu, on sort.
if "%1"=="" goto :eof
if "%2"=="" goto :eof
if "%3"=="" goto :eof
REM Création des variables de traitement.
set oldname="%1-%2-%3%4"
set tstamp=%2
set year=%tstamp:~0,4%
set month=%tstamp:~4,2%
set day=%tstamp:~6,2%
REM Pour ne pas perdre la date, on laisse le jour dans le nom final du fichier.
set newname="%day%-%3%4"
REM Future arborescence de répertoires.
set folder=".\%1\%year%\%month%"
REM Création de l'arborescence.
mkdir %folder%
REM Déplacement du fichier (devrait être instantané).
move %oldname% %folder%
REM Passage dans le répertoire créé, et renommage.
pushd %folder%
ren %oldname% %newname%
popd
REM Fin de traitement, retour à l'appelant.
goto :eof |
Partager