FOR コマンドに /R オプションを指定して実行すると、指定したパスから(省略時はカレントディレクトリから)ファイルを再帰的に検索し、各ファイルに対して順に処理することができます。
C:\> FOR /R . %x IN (*.java) DO @echo %x
C:\> FOR /R . %x IN (*.java) DO @type %x
C:\> FOR /R . %x IN (*.java) DO @type %x | find /c /v ""
FOR コマンドの /D オプションを使用すると、ディレクトリだけを検索することができます。
下記の例では、カレントディレクトリ以下にある特定の名前を持つディレクトリをすべて削除しています。
C:\> FOR /D /R . %x IN (*build) DO @del /f /s /q %x\*.* & rd /s /q %x
ちなみに、testbuild のような、build で終わる名前のディレクトリもすべて削除してしまうことに注意してください。
このあたりのディレクトリ列挙の詳しい振る舞いに関しては以下を参照してください。
DIR コマンドによるファイルの検索結果を FOR コマンドに渡して順番に処理することもできます。
例えば、下記の例では、カレントディレクトリ以下にある、拡張子 .temp を持つファイルを DIR コマンドを使って再帰的に検索し、見つかったファイルのパスを echo コマンドで表示しています。
C:\> FOR /F "tokens=*" %x IN ('dir /b/s *.temp') DO @echo %x
tokens=* という指定は、ファイル名にスペースを含んでいる場合に、FOR コマンドが全体を 1 つのファイル名として処理するために必要です。