forfiles.exe についてのメモ
条件に合致する多数のファイルに対して一括処理を施したいケースは多い。 Windowsでこれを実現してくれるのが、forfiles.exeというコマンド。
上の記事でも触れられているが、forfiles.exe の /C オプションの中では、 0x00の形式で特殊文字を使用できる。 記事中では0x09でタブですよと例示されているが、真に必要なのはダブルクォート。
/C オプションの引数はダブルクォートで実行コマンドを記述するのだが、 awkやsedのワンライナーを書こうとするとどうしても入れ子でダブルクォートをする必要がでてくるので、 0x22でくくってやるわけだ。
> forfiles.exe /S /D -2017/12/31 /M *.log /C "cmd /c gawk 0x22{print $0}0x22 @path"
このコマンドは、カレントディレクトリ以下にある2017/12/31以前の*.logファイルを{print $0}する。