2011年5月25日水曜日

FOR /F + DIR /B = ファイル名を順番に取り出して実行する方法 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
ファイル名を順番に取り出して実行したい時は、FOR /F と DIR コマンドを組み合わせる方法が簡単です。

次のような事が出来ます。
o ファイル名を並び替えて実行する
    + 名前順の他、更新日時順、逆順に並べる、といった事も簡単です。
o 特定の属性を持つファイルだけを取り出す
    + 隠しファイルだけを取り出す事も簡単に出来ます。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
rem ファイル名の取り出し。更新日時の古いもの順
for /f "delims=;" %i in ('dir /b /od c:\ミクさん\*.txt') do echo ファイル発見( %i )
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + delims は区切り文字の指定です。ここでは、(空白から)セミコロンに変更しています。
    + FOR /F の詳細は「FOR /F その2 = コマンド実行結果を1行ずつ取り出して実行する
    + DIR /B の詳細は「DIR /B。ファイル名だけの一覧を簡単に取得する方法

o バッチファイルで動かす時の書き方
--------
for /f "delims=;" %%i in ('dir /b /od c:\ミクさん\*.txt') do echo ファイル発見( %%i )
--------

    + バッチファイルの時は、変数名の前に「%」を2つ付けます。


**** メモ
o 上記の他に、ファイル名の一覧を作って編集する方法も、便利です。
    + 一旦、ファイル名をファイルに書き出します。(例。 dir /b > tmp.txt)
    + 書き出したファイルの内容を、編集します。
    + 最後に、FOR /Fで、編集したファイルからファイル名を読み込むようにします。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR /F その1 = ファイルを1行ずつ取り出して実行する
    FOR /F その2 = コマンド実行結果を1行ずつ取り出して実行する
    FOR /F その3 = 指定した文字列の分割結果を取り出して実行する