[BATCH][FOR] Variable dynamique dans tokens..

[Résolu/Fermé]
Signaler
-
 THANATOS -
Bonjour,
J'essaye de rendre dynamique le tokens d'une boucle FOR.

Voici mon batch non opérationnel comme désiré :

@echo off
SETLOCAL ENABLEdelayedExpansion
set Lettre="a b c d e f g h i j k l m n o p q r s t u v w x y z"
set count=0
for /F %%I in ('dir /b /O:D "%CD%\*.zip"') do (
set /A count=!count!+1
for /f "tokens=!count! delims= " %%L in (%Lettre%) do (
echo %%L : %%I
)

)
pause

Il me retourne : !count! delims= " était inattendu.
J'aimerais de l'aide pour le rendre fonctionnel.

Ce que je cherche à faire c'est de faire une incrémentation alphabétique pour une sous boucle FOR.

Niveau alphabétique au début je désirer convertir du décimal (097 -> 122) ou Octal (141 -> 172) en caractère. Mais apparemment en batch ce n'ai pas possible ? Du coup j'ai mis l'alphabet dans une variable..

Vous avez peut-être une meilleur procédure à me suggérer ? Lachez-vous !

Mes salutations distinguées,
THANATOS.

4 réponses

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
hello
DOS ne comprend pas ça : "tokens=!count!
que veux tu faire, afficher une lettre pour chaque .zip trouvé dans l'arborescence ?
a : nom1.zip
b : nom2.zip
c : nom3.zip
etc ?
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
125
Bonjour,

Ce qui est surprenant est que sans l'option expansion retardée de variables d'environnement (!) il est possible d'utiliser (sans erreur de syntaxe) une variable au lieu d'une valeur "en dur" . Exemple passé sous l'invite de commandes :

C:\Documents and Settings\Natalia>set /A rien = 1
C:\Documents and Settings\Natalia>set /A rien2 = 2

C:\Documents and Settings\Natalia>FOR /F "eol=; tokens=%rien%,%rien2%* delims=,
" %i in ("a,b,c") do @echo %i %j %k

Résultat :
a b c
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 331
effectivement, tokens=%var% fonctionne, mais pas tokens=!var!
je ferais ainsi:
@echo off
set c=1
SETLOCAL ENABLEdelayedExpansion
set L=a b c d e f g h i j k l m n o p q r s t u v w x y z
for %%d in (%L%) do (
set X.!c!.=%%d
set /a c=c+1
)
set count=0
for /F "delims=" %%I in ('dir /b /O:D "%CD%\*.zip"') do (
set /A count=!count!+1
for /f "tokens=2 delims==" %%a in ('set X.^|findstr /l "X.!count!."') do echo %%a : %%I
)
Je vous remercie pour vos réponses.
Je pense être arriver à mes fins :-)