web-dev-qa-db-fra.com

Fichier de commandes pour les jetons FOR / f

Quelqu'un peut-il expliquer exactement comment fonctionne le code suivant, ligne par ligne. Je suis vraiment perdu. J'ai essayé d'apprendre à utiliser la commande FOR mais je ne comprends pas cela.

@echo off

for /f "tokens=* delims= " %%f in (myfile) do (
  set line=%%f
  call :processToken
  )
  goto :eof

:processToken

  for /f "tokens=1* delims=/" %%a in ("%line%") do (
  echo Got one token: %%a
  set line=%%b
  )
  if not "%line%" == "" goto :processToken
  goto :eof
22
user880248
for /f "tokens=* delims= " %%f in (myfile) do

Cela lit un fichier ligne par ligne, supprimant les espaces de tête (merci, jeb).

set line=%%f

définit ensuite la variable line sur la ligne qui vient d'être lue et

call :procesToken

appelle un sous-programme qui fait quelque chose avec la ligne

:processToken

est le début du sous-programme mentionné ci-dessus.

for /f "tokens=1* delims=/" %%a in ("%line%") do

divisera alors la ligne à /, mais arrêt de la tokenisation après le premier jeton.

echo Got one token: %%a

produira ce premier jeton et

set line=%%b

définira la variable line sur le reste de la ligne.

if not "%line%" == "" goto :processToken

Et si line n'est pas encore vide (c'est-à-dire tous les jetons traités), il revient au début, en continuant avec le reste de la ligne.

36
Joey