Le nombre de jetons de limite dans le cadre d'une commande dans un Windows script batch

J'ai essayé de traiter un fichier texte dans un Windows script batch et je suis tombé sur quelque chose qui ressemble à une limitation de 31 jetons dans une boucle FOR. J'ai isolé le problème dans le code ci-dessous:

@ECHO OFF
SET DATA=01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

FOR /F "tokens=31* delims= " %%i IN ("%DATA%") DO (
    ECHO [%%i]
    ECHO [%%j]
)
ECHO.
FOR /F "tokens=32* delims= " %%i IN ("%DATA%") DO (
    ECHO [%%i]
    ECHO [%%j]
)

La sortie est:

[31]
[32 33 34 35]

[01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35]
[%j]

et je m'attendais à ce:

[31]
[32 33 34 35]

[32]
[33 34 35]

En espérant que je n'ai pas fait quelque chose de mal, je ne pouvais pas trouver cette limitation documenté dans l'aide de la commande FOR. Je suis sous Windows XP. Connaissez-vous une solution pour cela, en dehors de hachage large partie des données?

Merci.

Je viens de tomber sur cette limitation. Je ne faisais que for /F "tokens=32" %%a in ([big list of tokens])...., donc j'ai voulu la 32e jeton dans la variable %%a, et ne pense pas que je serais bosse dans toute limitation d'en obtenir juste un jeton à partir d'une liste. J'avais tort! Great post. 🙂

OriginalL'auteur Paul | 2009-06-11