Чому "cd D:" не змінює контекст команди на D:? [дублікат]


19

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

Кожен раз, коли я хочу змінити контекст каталогів на інший диск (D, E, F або будь-який інший ..) в командному рядку Windows, я повинен використовувати "Drive letter":\команду, щоб фактично змінити його. Якщо я спробую з "командою cd" на cd H:\ньому, просто перегукуйтесь з H: \ і нічого не роблю:

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

Чи є якась причина такої поведінки? Я маю на увазі, ви б не cd commandпрацювали для цього? Чому це не так?


Відповіді:


28

Спробуйте:

cd /d d:

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


1
Схоже, cmd.exe досить добре імітує поведінку DOS в цій ситуації, завдяки чому "поточний каталог" для кожного диска виразно запам'ятовується.
ЛоуренсC

4
Це справжня відповідь на те, "чому вдови працює так": бо DOS зробив це саме так.
KutuluMike

12

Причина, що Windows поводиться таким чином, полягає в тому, що DOS поводився саме так.

У DOS кожен диск має власний поточний каталог, і cdкоманда змінює поточний каталог на диску. Якщо це теж є поточним накопичувачем , то ваша робоча директорія змінюється разом із ним. Якщо ви хочете змінити поточний диск, ви просто вкажете літеру диска як команду.

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

Причина, по якій DOS працює таким чином, відноситься до найдавніших версій DOS і CP / M до цього. Деталі горі можна знайти в блозі Раймонда Чена .


6

Пряма відповідь полягає в тому, що "тому, що не написано так працювати". Просто ввівши, D:ви зробите все, що завгодно.

Цікаво, що введення cd D:\somedirфактично змінить поточний каталог на D: на \ data, але не змінить поточний командний рядок на D :.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.