Windows command > forコマンドによるループ処理

更新日 2012-11-17
広告
forを使うと、文字列を分割し、分割後の各文字に対して、同じ処理を実行できます。 デフォルトでは、区切り文字は「スペース」です。 以下の構文になります。
 for %i in (文字列) do %iを使ったコマンド
バッチファイルで書く場合は '%i' の部分を、'%%i' としてください。以下は、各文字に対してechoコマンドを実行する例です。
 for %i in (aaa bbb ccc) do echo %i
分割後に、特定の文字だけを選択することも可能です。以下は、1つ目の文字('aaa')のみを選択して、echoします。分割対象の文字列をダブルクォーテーションで囲んでください。
 for /f "tokens=1" %i in ("aaa bbb ccc") do echo %i
括弧の中に、シングルクォーテーションで囲まれたコマンドを指定すると、そのコマンドの実行結果を分割対象の文字列とできます。
 for /f "tokens=1" %i in ('jps.exe -lm ^| findstr SampleProgram') do taskkill /pid %i
上記の例は、以下の処理を行っています。
  1. jps.exeコマンドで実行中のJavaプログラムを一覧表示
  2. jps.exeの結果に対して、findstrコマンドを実行し、 SampleProgram という文字列が含まれる行を検索
  3. "tokens=1" で、SampleProgramのプロセスIDを取得
  4. taskkill にプロセスIDを渡し、SampleProgramのプロセスを停止
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system