web-dev-qa-db-ja.com

/ fトークンのバッチファイル

誰でも次のコードがどのように機能するかを行ごとに正確に説明してください。本当に迷いました。 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
22
user880248
for /f "tokens=* delims= " %%f in (myfile) do

これはファイルを1行ずつ読み取り、先頭のスペースを削除します(ありがとう、jeb)。

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がまだ空でない(つまり、すべてのトークンが処理されている)場合、最初に戻り、残りの行を継続します。

36
Joey