A voir également:
- [Batch]Variables pas mises à jour dans un FOR
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise a jour windows 7 - Accueil - Mise à jour
3 réponses
Un élément de réponse! (je me répond à moi même...)
Apparement, la commande For n'aime pas les parenthèses avec plusieurs commandes à l'intérieur après le "do".
Il faut donc tricher en créant une boucle externe:
for /F "tokens=* delims=mantis_" %%A in ('dir %REP%\mantis_* /a:d /b') do call ::BOUCLE1 %%A
:BOUCLE1
set B=%1
if defined B (
set AAAA_IT=
set MM_IT=
set JJ_IT=
set /a AAAA_IT=%B:~0,4%
echo %AAAA_IT%
set MM_IT=%B:~4,2%
echo %MM_IT%
set JJ_IT=%B:~6,2%
echo %JJ_IT%
if AAAA_IT LSS AAAA_LIM (
echo %REP%\mantis_%B%
rem rmdir /s %REP%\mantis_%B% >> %REP_TO%\clean_up_mantis.log
)
set B=
)
goto :EOF
Voila, maintenant, la liste est bien parcourue et ne bloque pas sur un seul répertoire, mais ce n'est qu'un début, car il y a toujours un problème.
En effet, les AAAA_IT, MM_IT et JJ_IT que j'affiche sont décalés: c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle suivante (et ceux assignés lors du tout premier passage dans la boucle correspondent au dernier passage dans la boucle la dernière fois que j'ai lancé le programme).
Quelqu'un peut-il m'aider?
Apparement, la commande For n'aime pas les parenthèses avec plusieurs commandes à l'intérieur après le "do".
Il faut donc tricher en créant une boucle externe:
for /F "tokens=* delims=mantis_" %%A in ('dir %REP%\mantis_* /a:d /b') do call ::BOUCLE1 %%A
:BOUCLE1
set B=%1
if defined B (
set AAAA_IT=
set MM_IT=
set JJ_IT=
set /a AAAA_IT=%B:~0,4%
echo %AAAA_IT%
set MM_IT=%B:~4,2%
echo %MM_IT%
set JJ_IT=%B:~6,2%
echo %JJ_IT%
if AAAA_IT LSS AAAA_LIM (
echo %REP%\mantis_%B%
rem rmdir /s %REP%\mantis_%B% >> %REP_TO%\clean_up_mantis.log
)
set B=
)
goto :EOF
Voila, maintenant, la liste est bien parcourue et ne bloque pas sur un seul répertoire, mais ce n'est qu'un début, car il y a toujours un problème.
En effet, les AAAA_IT, MM_IT et JJ_IT que j'affiche sont décalés: c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle suivante (et ceux assignés lors du tout premier passage dans la boucle correspondent au dernier passage dans la boucle la dernière fois que j'ai lancé le programme).
Quelqu'un peut-il m'aider?
Erratum :
"c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle suivante"
Il fallait lire :
"c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle précédente"
Mes excuses
"c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle suivante"
Il fallait lire :
"c'est à dire que les années, mois et jours que j'affiche à chaque fois correspondent en fait au répertoire que j'ai traité dans la boucle précédente"
Mes excuses
ok, bon, ça marchouille maintenant. Le problème, c'était apparemment que le IF n'aimait pas les muultiples commandes entre parenthèses non plus.
Il faut donc encore utiliser une boucle:
:BOUCLE1
set B=%1
if defined B goto BOUCLE2
:FIN2
goto :EOF
:BOUCLE2
set AAAA_IT=%B:~0,4%
echo %AAAA_IT%
set MM_IT=%B:~4,2%
echo %MM_IT%
set JJ_IT=%B:~6,2%
echo %JJ_IT%
if AAAA_IT LSS AAAA_LIM (
echo %REP%\mantis_%B%
rem rmdir /s %REP%\mantis_%B% >> %REP_TO%\clean_up_mantis.log
)
goto FIN2
et donc là, plus de décalage :)
Il faut donc encore utiliser une boucle:
:BOUCLE1
set B=%1
if defined B goto BOUCLE2
:FIN2
goto :EOF
:BOUCLE2
set AAAA_IT=%B:~0,4%
echo %AAAA_IT%
set MM_IT=%B:~4,2%
echo %MM_IT%
set JJ_IT=%B:~6,2%
echo %JJ_IT%
if AAAA_IT LSS AAAA_LIM (
echo %REP%\mantis_%B%
rem rmdir /s %REP%\mantis_%B% >> %REP_TO%\clean_up_mantis.log
)
goto FIN2
et donc là, plus de décalage :)