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

Résolu
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.
Configuration: Windows XP
Firefox 3.5.7

4 réponses

  1. Je vous remercie pour vos réponses.
    Je pense être arriver à mes fins :-)
    0
    1. Contributeur
      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
      1. 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
        1. Contributeur
          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