[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.
Configuration: Windows XP
Firefox 3.5.7

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. cchristian Messages postés 928 Statut Membre 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
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  4. THANATOS
     
    Je vous remercie pour vos réponses.
    Je pense être arriver à mes fins :-)
    0