WindowsXPのコマンドプロンプトで動く、UNIXのxargsコマンドもどきのバッチファイル。
以下の内容をxargs.batというファイル名で保存し、パスの通っているディレクトリに置いておくと
「xargs コマンド名 引数〜」で、標準入力の値を引数にしてコマンドを実行できる。
実行例:
C:\WINDOWS>dir /b *.dll | xargs echo twain.dll twain_32.dll vmmreg32.dll
ただし、「xargs コマンド < ファイル」という使い方は出来ない。→バッチの標準入力
@echo off
rem 引数が無いとき
if "%~1"=="" (
echo usage: stdout-command ^| %0 command
echo by hishidama 2007-10-26
exit/b 1
)
set LIST=
for /f "delims=" %%i in ('findstr .*') do call :add %%i
%* %LIST%
exit/b
:add
if "%LIST%"=="" (
set LIST=%*
) else (
set LIST=%LIST% %*
)
末尾のLISTへの追加処理を「set LIST="%*"」「set
LIST=%LIST% "%*"」に変えてやれば、空白文字の入ったファイル名に対応させることも出来るだろう。