バッチファイルでの引数解析例

Windows バッチファイルは過去の遺物(レガシー)。決別したくとも決別できないし、依然として Windows での手軽なバッチ処理実現手段でもあるため、新しく「書き捨て」したりメンテが発生したりする。今日、少し前に書いたバッチにコマンドライン引数を解釈する処理を付ける機会があった。これを、ある程度汎用的にしたものを Gist 化しておいたので以下に引用。

ポイントは以下 3 点。

  1. 引数解析処理として最低限の機能(主観)を備える
    • コマンドライン引数が 10 個以上あっても解析できる
    • オプションでない引数も解析できる(下記の例では for ループに使える形で _FILES 変数に格納)
    • /H オプションでヘルプメッセージ (usage) を出せる
    • 定義されていないオプションを指定するとエラー終了する
  2. コピペ前提
    • バッチファイルは柔軟性が無いため、結局コピペ&改造になるから
  3. シンプルな処理にとどめる
    • コピペ前提なので機能の充実よりもコード量の抑制を優先する
    • オプション指定はスラッシュ / で行う
      • ハイフンで始まるファイルは存在しうることを考えると頭が痛くなるので

できあがった引数解析例の Gist は以下の通り。