2008/12/24(水) [n年前の日記]
#1 [prog][windows] Windows XP用のwhichやwhereってないのかな
_Windows Vistaにはwhereがあるらしい
のだけど。Windows XP にはないみたいで。
◎ _@IT:Windows TIPS -- Hint:whichコマンドを作る :
Windows OSのコマンド・プロンプトでは、UNIXと同じ機能を持つコマンドがいくつも用意されているが、なぜかこのwhichに相当するコマンドは用意されていない。そこでバッチ・コマンドを使って非常に簡略化したwhichコマンドを実現してみよう。以下の2行の内容を持つファイルを作成し、which.batというファイル名で保存すればよい。保存先は、Windows OSのシステム・フォルダ(Windows NTならC:\WINNT、Windows 2000以降ならC:\WINDOWSなど)でよいだろう。
@echo off
for %%I in (%1 %1.com %1.exe %1.bat %1.cmd %1.vbs %1.js %1.wsf) do if exist %%~$path:I echo %%~$path:I
※この2行の内容をファイルwhich.batとして保存すること
実行するには、whichに続けて、調べたいコマンドの名前を付ければよい。
◎ _Windows Script Programming: Where is where.exe ? :
unix の which に相当するのは、Windows では whrere.exe です。MS 純正の where.exe は、以下からダウンロードできます。_ftp://ftp.microsoft.com/reskit/y2kfix/x86/
ftp://ftp.microsoft.com/reskit/y2kfix/x86/where.exe
which をバッチファイルで代替すると、
which.cmd ベース名.拡張子
@if exist "%~$PATH:1" echo;"%~$PATH:1"
この場合は、拡張子が省略できません。
拡張子を省略可にしたければ、環境変数のPATHEXTを使って、拡張子を補います。
which.cmd ベース名
@for %%1 in (%*) do @for %%2 in (.;%PATHEXT%) do @for %%3 in ("%%~1%%2") do @if exist "%%~$PATH:3" echo;"%%~$PATH:3"
◎ _手慰みのスクリプト which - しおそると :
_DOSのバッチファイルでカレントフォルダを取得するには? -OKWave
D&Dしたファイルのファイル名(フルパス名)は、バッチファイル内では、バッチファイルに渡されるパラメータとして、%1に格納されています。
また、バッチファイル自身のフルパス名は、%0に格納されています。
で、%0から、パス名やファイル名だけを取り出すには、パラメータ修飾子を使用します。
(下記の括弧内は、ファイル名が"C:\Documents and Settings\user\デスクトップ\test.bat"の時の例)
%0 :パラメータ全体("C:\Documents and Settings\user\デスクトップ\test.bat"⇒パス名にスペースが含まれているので、引用符(")が付く)
%~d0 :%0からドライブ名だけを取り出す。(C:)
%~p0 :%0からパス名だけを取り出す。(\Documents and Settings\user\デスクトップ\⇒両端に"\"が付く)
%~n0 :%0からファイル名だけを取り出す。(test)
%~x0 :%0からファイル拡張子だけを取り出す。(.bat)
%~s0 :%0をMS-DOSの8.3形式の短いファイル名を取り出す。(C:\DOCUME~1\USER\デスク~1\TEST.BAT)
(複数の修飾子を組み合わせることも可能)
なので、"test.bat"のパス名は、"%~dp0"で取り出せます。
cd %~dp0 (または、cd "%~dp0"←パス名にスペースが含まれる時)
◎ _Windows/DOS Free Soft :
which.exe (Screen Shot)おお。ありがたや。
指定コマンドが何処にあるか探す(実行されているコマンドのパスを知る)。 UNIX cshのwhichもどき。-aで全検索可能
◎ _@IT:Windows TIPS -- Hints:Windows OS向けリソースキット・ツールを入手する :
_Windows Server 2003 Resource Kit Tools
Windows XP向けのリソースキット・ツールは提供されていない(2004年4月現在)。しかしWindows Server 2003向けツールの必要環境を見ると、Windows XP/Windows XP SP1が対象環境として列挙されている。Windows XPユーザーは、Windows Server 2003向けのツールをインストールして使うことが可能である。入ってるツールの一覧を眺めたけれど。Tail.exe は入ってるけど、where.exe は入ってないっぽい。
[ ツッコむ ]
以上です。