Пакетный файл для токенов / f - PullRequest
21 голосов
/ 06 августа 2011

Может кто-нибудь объяснить, как работает следующий код, строка за строкой.Я действительно потерян.Я пытался научиться использовать команду FOR, но я не понимаю этого.

@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

1 Ответ

36 голосов
/ 06 августа 2011
for /f "tokens=* delims= " %%f in (myfile) do

Это читает файл построчно, удаляя начальные пробелы (спасибо, Джеб).

set line=%%f

устанавливает затем переменную line в только что прочитанную строку и

call :procesToken

вызывает подпрограмму, которая что-то делает со строкой

:processToken

- это начало подпрограммы, упомянутой выше.

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

затем разделит строку на /, но остановит токенизацию после первого токена.

echo Got one token: %%a

выведет первый токен и

set line=%%b

установит переменную line для остальной части строки.

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

И если line еще не пуст (т. Е. Все обработанные токены), он возвращается к началу, продолжая с остальной части строки.

...