2006 年 3 月 23 日 23 時 40 分

for コマンド


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


cmd には、for というコマンドがある。
for は、ディレクトリ内にあるファイルに対して
繰り返しを行うコマンドだ。

cmd で試してみよう。
まずはコマンドプロンプトを起動する。
そして、カレントディレクトリを C:\WINDOWS にする。

C:\Documents and Settings\kes>cd \WINDOWS

さて、for コマンドを実行してみる。
実行すると、C:\WINDOWS 配下のテキストファイルの名前が
ずらっと表示されたはずだ。

C:\WINDOWS>for %f in (*.txt) do @echo %f
IE4 Error Log.txt
ModemLog_SII AH-S405C.txt
ntbtlog.txt
OEWABLog.txt
SchedLgU.Txt
UPGRADE.TXT

for は以下の構文である。
「for 変数 in (パターン) do 繰り返しコマンド」
変数は、%f のように、パーセントと英字 1 文字だ。
変数にはディレクトリ内のファイル名が順番に入る。
今回は繰り返しに echo コマンドを使い、表示する。
echo の前の @ は、echo コマンド自体を非表示にするため。
無しで実行すると出力が見にくくなる

/r スイッチを使うと、
サブディレクトリを再帰的に検索する。

C:\WINDOWS>for /r %f in (*.txt) do @echo %f
C:\WINDOWS\IE4 Error Log.txt
C:\WINDOWS\ModemLog_SII AH-S405C.txt
C:\WINDOWS\ntbtlog.txt
C:\WINDOWS\OEWABLog.txt
C:\WINDOWS\SchedLgU.Txt
C:\WINDOWS\UPGRADE.TXT
C:\WINDOWS\Help\Tours\mmTour\intro.txt
(省略)

/d スイッチを使うと、
ファイルではなく、ディレクトリ名の一覧となる。

C:\WINDOWS>for /d %f in (*) do @echo %f
addins
AppPatch
assembly
Cluster
Cursors
(省略)

/r スイッチに、ピリオド 1 つだけのパターンを使うと、
ディレクトリも再帰的に検索できる。

C:\WINDOWS>for /r %f in (.) do @echo %f
C:\WINDOWS\.
C:\WINDOWS\addins\.
C:\WINDOWS\AppPatch\.
C:\WINDOWS\AppPatch\MUI\.
C:\WINDOWS\AppPatch\MUI\0411\.
C:\WINDOWS\assembly\.
(省略)

/l スイッチを指定すると、BASIC の FOR 文のように
数値を指定した繰り返しになる。
パターンには、カンマで区切って、
開始値、増分値、終了値を入れる。

C:\WXPWKSTA>for /l %f in (3,11,60) do @echo %f
3
14
25
36
47
58

3 から初めて、11 ずつ足し、60 になるまで繰り返される。

for は do の後にコマンドを指定できるので、
任意のコマンドと組み合わせて使うようにできている。

今回紹介していないものに /f というスイッチがある。
これを使えば、ディレクトリではなく、
テキストファイルを読み出して処理ができるのだ。
明日はこれを使ってみよう。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.