web-dev-qa-db-ja.com

「cd D:」がコマンドコンテキストをD:に変更しないのはなぜですか?

重複の可能性:
Windowsコマンドラインでcdコマンドを使用すると、D:\に移動できません

Windowsコマンドプロンプトでディレクトリコンテキストを別のドライブ(D、E、Fなど)に変更するたびに、"Drive letter":\コマンドを使用して実際に変更する必要があります。 "cd command"cd H:\で試してみると、H:\がエコーされて何も行われません。

Enter image description here

そのような行動には何らかの理由がありますか?つまり、これを行うためにcd command仕事をしませんか?なぜそうではないのですか?

19
Diogo

試してください:

cd /d d:

/dは、ドライブ文字とディレクトリも切り替えます。その他の情報については、cd /?を参照してください

30
jftuga

Windowsがこのように動作するのは、DOSがそのように動作するためです。

DOSでは、各ドライブに独自の現在のディレクトリがあり、cdコマンドはドライブの現在のディレクトリを変更します。それがたまたま現在のドライブである場合、作業ディレクトリもそれに応じて変更されます。現在のドライブを変更する場合は、ドライブ文字をコマンドとして指定するだけです。

Windowsが実際にこのように動作しないことに注意してください-現在のディレクトリは常に1つしかありません-コマンドShellは非常に長くなりますドライブごとの現在のディレクトリがまだ存在するふりをします。これはおそらく、既存のDOSバッチファイルとの互換性を維持するためです。

DOSがこのように機能する理由は、DOSの最も初期のバージョン、およびその前のCP/Mにまでさかのぼります。残酷な詳細は Raymond Chenのブログ にあります。

12
KutuluMike

正直な答えは、「そのように機能するように書かれていないから」です。単にD:はあなたがやりたいことをします。

不思議なことにcd D:\somedirは、実際には、D:の現在のディレクトリを\ dataに変更しますが、現在のコマンドプロンプトをD:に変更しません。

6
uSlackr