Récuperer les 2 derniers répertoires [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
24 juillet 2020
-
Messages postés
7
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
24 juillet 2020
-
Bonjour,

dans un fichier de commandes Windows (.bat) je cherche à récupérer les 2 derniers répertoires d'une arborescence dans des variables, pour ensuite en comparer le contenu, et j'ai un soucis avec les variables, impossible de conserver la valeur n-1, exemple ci-dessous :

FOR /F %%F in ('dir /b /ad /on C:\TOTO') do (
 SET source=%cible%
 SET cible=%%F
)

Admettons que dans C:\TOTO j'ai les répertoires :
Rep1
Rep2
Rep3

à la fin j'ai bien cible =Rep3 mais dans source rien du tout

Si je trace les variables dans la boucle je m'aperçois que cible perd son contenu à chaque nouvelle itération du FOR.

Une idée ?

Merci d'avance.

1 réponse

Messages postés
7
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
24 juillet 2020

Finalement j'ai trouvé la solution, curieusement ce qui se passe dans un FOR est éphémère à chaque itération. il faut se mettre en "delayed expansion" et récupérer la variable avec des points d'exclamation (va comprendre ce qui est passé dans la tête des développeurs microsoft ce jour là...)

Ce qui donne :

setlocal enabledelayedexpansion
FOR /F %%F in ('dir /b /ad /on C:\TOTO') do (
	SET source=!cible!
	SET cible=%%F
)