読者です 読者をやめる 読者になる 読者になる

くんすとの備忘録

プログラミングや環境設定の覚え書き。

xargs -Iのようにコマンドの実行結果をパイプで次のコマンドに渡すBATファイル

これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの12日目の記事です。

Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。

BATファイルを使って、ひとつ前のコマンドの実行結果を次のコマンドに1行ずつ渡します。

each.bat

@set COMMAND=%*
@for /f "usebackq tokens=*" %%o in (`findstr .*`) do @(
	call %%COMMAND:?=%%o%%
)

機能

eachの引数に与えたコマンドに渡され、そこに含まれる「?」が、前のコマンドの標準出力の1行の内容に置換されます。

使用例

C:\test>dir /b
aaa
bbb
ccc
each.BAT

C:\test>dir /b | each echo ? --- ?.hogehoge
aaa --- aaa.hogehoge
bbb --- bbb.hogehoge
ccc --- ccc.hogehoge
each.BAT --- each.BAT.hogehoge

簡単な解説

標準入力の内容を「findstr .*」で抜き出して、環境変数の置換機能を使って置換しながら実行します。

環境変数の置換についてはこの前のset /?の記事(コマンドプロンプトで読んでおくべき7つのHELP - その⑤「set /?」 - くんすとの備忘録
)に書いて〼



あると便利な、はず……筈。。

広告