Windowsで「which」コマンドを使う

検索したのだけど、ちょっと満足できなかったので、自作した。
(pathext固定が嫌とか、長いとか、無意味な不満です、はい)
車輪の再発明も甚だしいところ。



結論

以下のbatスクリプトをpathの通っているところに置く。
which.bat

@echo off
rem which

rem pathextから対象拡張子を列挙
setlocal enabledelayedexpansion
set whichTar=%1
set whichTar=!pathext:.=%whichTar%.!

rem 探して表示
for %%I in (%1;%whichTar%) do if exist %%~$path:I echo %%~$path:I

rem 片付け
set whichTar=
endlocal

遅延評価を使うので、XP以降だったかな。

小技

環境変数には簡単な置換機能がある。
遅延評価を使えば、変数を置換に利用することも可能。