[BATCH][FOR] Variable dynamique dans tokens..
Résolu/Fermé4 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 janv. 2010 à 08:03
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 ?
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 ?
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
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 :
Résultat :
a b c
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 janv. 2010 à 13:15
28 janv. 2010 à 13:15
effectivement, tokens=%var% fonctionne, mais pas tokens=!var!
je ferais ainsi:
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 )