Почему «cd D:» не меняет контекст команды на D :? [Дубликат]

19

Возможное дублирование:
используя команду cd в командной строке Windows, невозможно перейти к D: \

Каждый раз, когда я хочу изменить контекст каталога на другой диск (D, E, F или любой другой ...) в командной строке Windows, я должен использовать "Drive letter":\команду, чтобы фактически изменить его. Если я пытаюсь с «командой CD» на cd H:\нем просто эхо H: \ для меня и ничего не делать:

Введите описание изображения здесь

Есть ли какая-то причина для такого поведения? Я имею в виду, не cd commandработаешь, чтобы сделать это? Почему не так?

Диого
источник
2
Относящиеся .
Даниэль Бек

Ответы:

28

Пытаться:

cd /d d:

/d будет также переключать буквы дисков и каталогов, для получения дополнительной информации см. cd /?

jftuga
источник
1
Похоже, cmd.exe очень хорошо имитирует поведение DOS в этой ситуации, благодаря чему «текущий каталог» для каждого диска запоминается отчетливо.
LawrenceC
4
Это реальный ответ на вопрос «почему Widows работает таким образом»: потому что DOS сделал это именно так.
KutuluMike
12

Причина, по которой Windows ведет себя так, заключается в том, что DOS ведет себя так.

В DOS каждый диск имеет свой текущий каталог, и cdкоманда изменяет текущий каталог на диске. Если это также окажется текущий диск , то ваш рабочий каталог меняется вместе с ним. Если вы хотите изменить текущий диск, вы просто указываете букву диска в качестве команды.

Заметим, что Windows на самом деле больше не работает таким образом - у вас есть только один текущий каталог в любое время - но командная оболочка делает все возможное, чтобы притвориться, что для каждого диска есть текущие каталоги. Предположительно это делается для сохранения совместимости с существующими пакетными файлами DOS.

Причина, по которой DOS работает таким образом, восходит к самым ранним версиям DOS и CP / M до него. Подробности можно найти в блоге Рэймонда Чена .

KutuluMike
источник
6

Прямой ответ таков: «потому что оно написано не так». Просто вход D:будет делать то, что вы хотите.

Любопытный ввод cd D:\somedirфактически изменит текущий каталог на D: на \ data, но не изменит текущую командную строку на D :.

uSlackr
источник