Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【コマンドプロンプト】ファイル名やディレクトリ名をTabキーで補完できなくなった

コマンドプロンプトでは、Tabキーを使うとファイル名やディレクトリ名を補完する機能がある。例えば、

> cd C:\wi

という状態で、Tabキーを押すと、

> cd C:\Windows

となる(ディレクトリ名補完)。以下のような場合で、

> dir C:\Windows\ex

Tabキーを押すと、

> dir C:\Windows\explorer.exe

となるはず(ファイル名補完)。

この機能が突然使えなくなる、あるいは最初から使えない場合がある。この機能を有効にするには、レジストリエディターで修正する必要がある。

レジストリエディターを起動し、\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processorを開く。例えば以下のようになっているはず。

f:id:munibus:20200310062804p:plain

CompletionCharがファイル名補完を行うための制御文字コード、PathCompletionCharがディレクトリ名補完を行うための制御文字コード。これをそれぞれ「9」(10進数の9、16進数の9、0x9のこと)に修正する。修正後に、コマンドプロンプトを再起動すると、Tabキーで補完できるようになったはず。

コマンドプロンプトの本体(cmd.exe)は、起動時に/Fオプションでこの補完機能を有効するか否かの指定をすることができる。デフォルトでは有効(ON)になっている。

以下に、cmd.exeのヘルプを参考に張り付けた。

/F:ON ファイル名およびディレクトリ名補完文字を有効にします
/F:OFF ファイルおよびディレクトリ名補完文字を無効にします
CMD.EXE の特定の起動のファイル名補完機能を有効または無効にするには、/F:ONまたは /F:OFF スイッチを使用します。コンピューターとユーザー ログオン セッションまたはそのいずれかで起動される CMD.EXE コマンドすべてに対して補完機能を有効または無効にするには、REGEDIT.EXE を使ってレジストリにある次の REG_DWORD 値を設定します。コンピューターに対しては、
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar
に特定の機能に使う 16 進の制御文字を設定します (例 0x4 は Ctrl-D、0x6 はCtrl-F)。ユーザー ログオン セッションに対しては、
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar
に特定の機能に使う 16 進の制御文字を指定します (例: 0x4 は Ctrl-D、0x6 はCtrl-F)。ユーザー固有の設定は、コンピューターの設定より優先されます。コマンド ライン スイッチは、レジストリの設定より優先されます。
/F:ON スイッチで補完機能を有効にした場合、2 つの制御文字 (Ctrl-D はディレクトリ名補完機能、Ctrl-F はファイル名補完機能) が使用されます。レジストリで特定の補完文字を無効にするには、制御文字として有効でないスペース(0x20) の値を使用します。