Programming Field

Ftype - DOS/コマンドプロンプト コマンド一覧

[Windows 2000/XP 以降] ファイル関連付けで使用するファイルの種類に対し、実際に実行するプログラム(オープンコマンド)の割り当てを行います。

※ 設定変更はシステム全体の設定を変更することになるため、管理者権限または同等の権限が必要になる場合があります。

構文

-- 設定の表示
ftype [progid]
-- 設定の変更
ftype progid=[open-command]
progid

ファイルの種類名を指定します。実際には ProgID を指定します。

progid を指定せず、単独で「ftype」と実行した場合は、現在登録されているファイルの種類とオープンコマンドをすべて出力します。

open-command

実行するプログラムを含むコマンドライン(オープンコマンド)を指定します(「progid=open-command」の(最初の)「=」文字以降全体がコマンドラインとなります)。コマンドラインにはプログラムへのパスの他、ファイル名に置き換えられる「%1」などのプレースホルダーを含めることができます(解説参照)。

※ 環境変数やプレースホルダーを含めるために「%」文字を使う場合は、プロンプト上で実行する場合とバッチファイル内に記述する場合で「%」文字の扱いが変わるため注意が必要です。バッチファイルでは必ず「%%」と「%」文字を重ねて指定する必要がある一方、プロンプト上では「%」文字を重ねる必要がない代わりに環境変数が自動で展開されるため環境変数名を含めることがほぼできません。

open-command を省略して「ftype progid=」と「=」で止めた場合は、ProgID からコマンドラインの設定を削除します。

解説

Ftype はファイル関連付けで使用するファイルの種類を扱います。Assoc コマンドと組み合わせることで、独自の拡張子に独自の関連付けを与えることができます。

Ftype では HKEY_LOCAL_MACHINE\Software\Classes 以下にファイルの種類を登録します。登録時、open-commandprogid\Shell\Open\Command の「(既定)」の値として REG_EXPAND_SZ タイプで書き込みます。REG_EXPAND_SZ が使用されるため、環境変数名をコマンドラインに含めることが可能となっています。

※ Shell\Open\Command 以外の設定を書き込まないため、新規にファイルの種類を登録した場合、そのファイルの種類名は空となり、エクスプローラー上では「<拡張子> ファイル」などと表示されます。また、アイコンはオープンコマンドのプログラム名から自動で検索され使用されます。これらを別途登録したい場合は Reg コマンドなどを使って直接レジストリを操作する必要があります。

コマンドラインには「%1」などのプレースホルダーを含めることができますが、このプレースホルダーは関連付けの登録関連で使用できる特殊なものとなり、バッチファイルで使用される「%」と似ているものの若干異なるものとなっています。例えば「%*」はファイルオープン時に追加引数として与えられたすべての値に展開されますが、ファイル名に展開される「%1」分は含まれません(「%*」≒「%2 %3 %4 ...」のようになります)。プレースホルダーの詳細は「コマンドラインに指定できるプレースホルダー」をご覧ください。

サンプル1

ftype | find /I "notepad.exe"

実行するコマンド(オープンコマンド)に「notepad.exe」が使用されているファイルの種類を抽出して出力します(厳密には ProgID に「notepad.exe」が含まれるものも出力されてしまいます)。

サンプル2 (バッチファイル)

@echo off
setlocal enableextensions
cd /D "%~f1"
copy /Y "%~dp0hoge.exe" . > NUL
ftype HogeFile="%CD%\hoge.exe" "%%1" > NUL
if not %ERRORLEVEL%==0 exit /b
assoc .hoge=HogeFile > NUL

「hoge.exe」をバッチファイルの第1パラメーターで指定されたディレクトリにコピー(インストール)し、コピー先のパスにある「hoge.exe」でファイルを開くようにファイルの種類「HogeFile」と拡張子「.hoge」を登録します。Ftype はエラー時に終了コードが 0 以外になるため、If コマンドを使って成否をチェックすることができます。