Récuperer les 2 derniers répertoires

Résolu/Fermé
Champosoleil Messages postés 9 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 16 février 2021 - Modifié le 24 juil. 2020 à 10:58
Champosoleil Messages postés 9 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 16 février 2021 - 24 juil. 2020 à 11:26
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

Champosoleil Messages postés 9 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 16 février 2021
24 juil. 2020 à 11:26
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
)
0