xargs.cmd

はじめて xargs ちゃんに出会って以来、彼女のことが頭から離れなくて色々検索した結果、Windows 用に気合いでバッチを作った猛者の方がいらっしゃった!

  • xargs.cmd
    標準入力からの引数でコマンドを繰り返し実行するバッチファイル(CMD)

猛者だ…。そんなわけで NYACUS で使い倒す

findf ./ -name "*.html" | largs egrep -l -e "u[nm]ko|ti[nm]po" %I

はいきた!。徹夜作業などで朦朧とし、うっかり手が滑ってヒワイな言葉をコメントに書いたりしてないかを確実にチェック。これで納品時も安心です。

本物と違って %I が必要だったりしますが、これって Windows のプロンプトの FOR文 の変数だそうなので、help FOR で出てくるオプション構文あれこれが使えちゃいます。

    %~I         - すべての引用句 (") を削除して、I を展開します。
    %~fI        - %I を完全修飾パス名に展開します。
    %~dI        - %I をドライブ文字だけに展開します。
    %~pI        - %I をパス名だけに展開します。
    %~nI        - %I をファイル名だけに展開します。
    %~xI        - %I をファイル拡張子だけに展開します。
    %~sI        - 展開されたパスは短い名前だけを含みます。
    %~aI        - %I をファイルの属性に展開します。
    %~tI        - %I ファイルの日付/時刻に展開します。
    %~zI        - %I ファイルのサイズに展開します。
    %~$PATH:I   - PATH 環境変数に指定されているディレクトリを
                  検索し、最初に見つかった完全修飾名に %I を
                  展開します。
                  環境変数名が定義されていない場合、または検索
                  してもファイルが見つからなかった場合は、この
                  修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:

    %~dpI       - %I をドライブ文字とパスだけに展開します。
    %~nxI       - %I をファイル名と拡張子だけに展開します。
    %~fsI       - %I を完全なパスと短い名前だけに展開します。
    %~dp$PATH:I - PATH 環境変数に指定されているディレクトリを
                  検索して %I を探し、最初に見つかったファイル
                  のドライブ文字とパスだけに展開します。
    %~ftzaI     - %I を DIR コマンドの出力行のように展開します。

こりゃ便利!

また、xargs.cmd なら空白と改行で中身をばらしてくれて、largs.cmd は予め改行でしかばらさないようになっていました。

僕レベルの使い方では、やりたいことはみんな NYACUS で出来てしまうわけですが、逆クォート展開ですぐオーバーフローしてしまうのだけは悲しかったんです。これでほとんど解決!。xargs さんとつきあいたい。

ちなみに先月俺の女になった Apache さんはその後、モジュールのソースを読んだりしていたぶり倒して楽しんでいます。すっかり俺の女だぜフフフ…。