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

Résolu
THANATOS -  
 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

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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 ?
0
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   131
 
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
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
)
0
THANATOS
 
Je vous remercie pour vos réponses.
Je pense être arriver à mes fins :-)
0