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

Résolu/Fermé
THANATOS - 28 janv. 2010 à 00:38
 THANATOS - 28 janv. 2010 à 16:36
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 janv. 2010 à 08:03
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 lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 janv. 2010 à 13:01
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 janv. 2010 à 13:15
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
Je vous remercie pour vos réponses.
Je pense être arriver à mes fins :-)
0