Bonjour à tous,

Nouvelles difficultés avec l’utilisation d’une boucle FOR.
Le code suivant va analyser des répertoires sous [D:\Exemple] du type [Test_AAAA_MM_JJJJ_XXX ] où AAAA_MM_JJJJ sont des dates et XXX sont des nombres. Je voudrais connaître le nombre le plus grand [NumMax].

La première version fonctionne mais la boucle n’est pas bien utilisée car elle peut me fournir que la dernière information.

Code bat : 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
@ECHO OFF
 
SETLOCAL EnableDelayedExpansion
 
SET OldTarget="D:\Exemple\Test_"
SET /a Longueur=17
 
SET /a Num=0
SET /a NumMax=0
SET /a Longueur=%Longueur%+10
 
FOR /d %%G IN ("%OldTarget%*") DO SET NomRep=%%~G
SET /a Num=!NomRep:~%Longueur%,3!
IF %Num% GTR %NumMax% SET /a NumMax=%Num%
 
ECHO %NumMax%
 
PAUSE
La deuxième version ne fonctionne pas mais elle devrait me permettre, une fois le problème trouvé, d’obtenir la bonne information. Après quelques tests, la variable [NomRep] ne semble pas prendre le nom du répertoire.
Elle fournit une info. avec [ECHO !NomRep!] mais rien dans le [SET /a Num=!NomRep:~%Longueur%,3!].

Code bat : 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
@ECHO OFF
 
SETLOCAL EnableDelayedExpansion
 
SET OldTarget="D:\Exemple\Test_"
SET /a Longueur=17
 
SET /a Num=0
SET /a NumMax=0
SET /a Longueur=%Longueur%+10
 
FOR /d %%G IN ("%OldTarget%*") DO (
	SET NomRep=%%~G
	SET /a Num=!NomRep:~%Longueur%,3!
	IF %Num% GTR %NumMax% SET /a NumMax=%Num%
)
 
ECHO %NumMax%
 
PAUSE

Auriez-vous une idée ?

Merci pour votre aide.