ハードなソフトの話

アクセスカウンタ

zoom RSS 続・Windows で UNIX の which みたいなこと

<<   作成日時 : 2006/03/13 22:33   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

真面目に、MSDNを読んでみたら PATHEXTという環境変数があることに気が付いた。
PATHEXTに拡張子を登録すると、ベースネームだけを入れればプログラムが実行される。
たとえば、telnet とたたけば、telnet.exe とたたかなくてもtelnetが実行される。
それは、.exe が PATHEXTに設定されているからである。

MS-DOSのときは、.COM;.EXE;.BATで固定だったから、今までは調べもしなかった。マニュアルはたまに読むものである。

http://www.microsoft.com/resources/documentation/WindowsServ/2003/datacenter/proddocs/ja-jp/Default.asp?url=/resources/documentation/WindowsServ/2003/datacenter/proddocs/ja-jp/ntcmds_shelloverview.asp

さて、前回書いた which.bat は、PATHEXTを解析して全部の拡張子でファイルを検索するように書き直してみた。

@echo off 
setlocal 
if "%1" == "" ( 
    echo 使用法: %0 ^<filename^> 
    goto :EOF 

set found= 
for %%i in (%pathext:;=,%) do call :find %1%%i 
if "%found%"=="" echo 見つかりませんでした 
endlocal 
goto :EOF 
 
:find 
if not "%~$PATH:1" =="" ( 
    echo %~$PATH:1 
    set found=Yes 
)  
goto :EOF

これで拡張子がわからないファイルでも検索できるようになった。しかし、バッチファイルって可読性、悪いなあ…。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
続・Windows で UNIX の which みたいなこと ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる