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

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

重複の可能性あり:
Windows のコマンド ラインで cd コマンドを使用しても、D:\ に移動できない

Windowsのコマンドプロンプトでディレクトリコンテキストを別のドライブ(D、E、Fなど)に変更したいときは、"Drive letter":\実際に変更するにはコマンドを使用する必要があります。「cd コマンド」そこにはcd H:\H:\ がエコーされるだけで、何も起こりません:

ここに画像の説明を入力してください

このような動作には何か理由があるのでしょうか? つまり、cd commandこれを行うのはうまくいかないのでしょうか? なぜうまくいかないのでしょうか?

答え1

試す:

cd /d d:

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

答え2

Windows がこのように動作する理由は、DOS がこのように動作していたためです。

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

Windowsは実際には仕事この方法はもう使えません。つまり、常に現在のディレクトリは 1 つだけになります。しかし、コマンド シェルは、ドライブごとに現在のディレクトリがまだあるかのように見せかけるために多大な努力を払います。おそらく、これは既存の DOS バッチ ファイルとの互換性を維持するためです。

DOSがこのように動作する理由は、DOSの最も初期のバージョン、およびそれ以前のCP/Mにまで遡ります。詳細は以下をご覧ください。レイモンド・チェンのブログ

答え3

率直な答えは、「そのように動作するように書かれていないからです」です。単に入力するだけで、D:必要な処理が実行されます。

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

関連情報