イネマルのプログラミング備忘録

趣味プログラマーのメモ。

ファイルエクスプローラーからコマンドプロンプトを起動するテクニックの罠

f:id:inemaru:20180226213203p:plain

はじめに

ファイルエクスプローラー使用時に、
現在のディレクトリをカレントとしてコマンドプロンプトを起動するテクニックとして
アドレスバーに「cmd」と入力する方法が紹介されることがあります。

このテクニックが、常に意図通り動作しないことがあるという話。

そもそも、なぜコマンドプロンプトが起動するのか

動作原理は、下記の通り。

  • 環境パスが設定されている場所に、cmd.exe がある
  • 拡張子の.exe は、省略ができる
  • ファイルエクスプローラーのアドレスバーは、現在のディレクトリをカレントとしてコマンドを受け付ける

問題とその対処

問題

環境パスが通っている場所(例えば、デスクトップ)に「cmd」というフォルダあったとします。
この状態で、先に説明したテクニックを使用するとコマンドプロンプトは起動しません。

デスクトップの「cmd」フォルダが開くことになります。
これは、拡張子をつけても同じ話で「cmd.exe」と言う名前でフォルダがあれば同様の挙動となります。

対処法

「cmd」を「%ComSpec%」とすれば、解決します。

環境変数を使用する事で、
コマンドプロンプトの実行ファイルをフルパスで指定するため、問題は回避できます。

あとがき

このテクニックは、うまく動作する場合の方が多いので、
説明が省かれることが多いと思い、備忘録行き。