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

226

Это может быть глупый вопрос, и я думаю, что я искал ответ в другом месте ... Может быть, проблема с путями, но когда я открываю командную строку и набираю из C:\>:

cd D:\

Я не могу попасть на диск D Даже если я наберу:

cd D:\<folder name>

Он command.exeавтоматически завершит строку клавишей табуляции, чтобы он знал, где я нахожусь. Это просто не печатает, чтобы показать результат или фактически получить меня там. Эта проблема существует и для сетевых дисков.

Теперь, если я использую команду chdir( cd), как это:

chdir D: или же cd d:

Я получаю распечатку из приведенной D:\ниже команды, но она все еще говорит, что я в C:\.

Я чувствую, что упускаю что-то простое.

nicorellius
источник
Я использовал pushdвместо этого cdпочти везде, так как в таких ситуациях он ведет себя намного лучше.
Goyuix
5
Смотрите этот ответ " cd / d D: " superuser.com/a/135239/78897
Pacerier
1
Попробуйте это: cd / dd:
DevWL

Ответы:

324

Возвращаясь ко временам DOS, для каждого диска есть отдельный «текущий каталог». cd D:\foldernameизменяет текущий каталог D: на указанное имя папки, но не меняет того факта, что вы все еще работаете на C:диске.

То, что вы хотите, это просто:

D:

Здесь вы можете увидеть, как работает «отдельный текущий каталог для каждого диска»:

C:\Users\coneslayer>e:

E:\>c:

C:\Users\coneslayer>cd e:\software

C:\Users\coneslayer>e:

e:\Software>
coneslayer
источник
16
В ситуации «самого быстрого оружия на западе» победителем становится тот, кто дает лучшее объяснение. +1, и я удаляю свой аналогичный ответ.
Gnoupi
2
Удалил мой тоже. Нет необходимости в дополнительном беспорядке.
th3dude
3
-1 а) ты не указал, что cd e:\softwareлиния ничего не сделала. Как будто ты вставил туда фантомную команду CD. Почему? Чтобы заставить его думать, что вы использовали компакт-диск, когда вы не были? и б) как, /dчерт возьми, вы не упомянули о включении CDing в определенный каталог на другом диске? Он сказал с помощью команды cd, так что, хотя хорошо, что вы указали, как это можно сделать без команды CD d:<ENTER>, вы должны были упомянуть команда CD , а также cd /d d:илиcd /d d:\blah
barlop
3
@barlop The cd E:\softwareничего не делает. Он изменяет текущий каталог E-раздела на softwareпапку, что демонстрируется при окончательном переключении на E-раздел с помощью E:. Хорошее предложение с CD / D, хотя.
miyalys
@miyalys интересный и замечательный момент
barlop
78

Он сделал работу, так как команда предназначена для работы.

Вы просто не знаете, как это на самом деле должно работать.

Вы не используете оболочку Unix или Linux. Команда cdв интерпретаторе команд Microsoft не ведет себя так, как cdкоманды в таких оболочках. Это ведет себя несколько иначе. В частности, он не всегда меняет каталог . В оболочках Unix и Linux cdтолько когда-либо устанавливает рабочий каталог. В интерпретаторе команд Microsoft cdиногда запрашивает его. Там нет отдельной pwdкоманды, так cdи две работы.

Если вы не укажете ему аргументы или аргумент, представляющий собой просто букву диска и двоеточие без пути, тогда он сообщит о текущем каталоге вместо его изменения . Если вы не укажете аргументы, он сообщит о текущем каталоге текущего диска процесса интерпретатора команд. Если в качестве аргумента вы указываете только букву диска и двоеточие, он сообщает текущий каталог процесса интерпретатора команд этого диска. Каждый диск имеет свой текущий каталог в интерпретаторе команд. (Это вымысел, поддерживаемый библиотеками времени выполнения для реализаций Microsoft и нескольких других поставщиков различных языков программирования. Сам Win32 не работает таким образом.)

Поэтому, когда вы d:указали его в качестве аргумента, он сообщил вам текущий каталог процесса интерпретатора команд на диске D, который оказался D:\. Если бы вы не дали ему никаких аргументов, он бы вам об этом сообщил C:\.

Если вы хотите, чтобы cdкоманда всегда находилась в режиме установки и никогда не находилась в режиме запроса, вам нужно добавить эту /Dопцию. Это вынуждает команду всегда находиться в заданном режиме, а также расширяет ее, чтобы она изменяла текущий диск, а также изменяла текущий каталог диска. (Другими словами, он работает больше, чем на самом деле Win32 API.)

Так, например, командная строка

кд / дд:
изменит каталог на текущий каталог на диске D, а также на текущий диск на диск D.

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

д:

дальнейшее чтение

  • JP Software (2011). CD / CHDIR TCC Онлайн-справка.
  • Корпорация Microsoft (2001). Чдир (CD) . TechNet Windows XP Справочник по командной строке A – Z.
JdeBP
источник
3
Не совсем верно. Если вы это сделаете, cd d:\ это изменит рабочий каталог на d:. Если вы сделаете d:\ потом, это будет в d:\ . Если вы сделаете cd d:\something\somethingничего, сначала ничего не произойдет. Но если вы сделаете d:\ потом снова, ваш путь будет d:\something\something"!
sinni800
4
Ничто из этого никак не противоречит тому, что написано выше sinni800(кроме того, что вы неверно понимаете синтаксис для изменения текущего диска, но я это пропущу). Я не включил обсуждение того, что происходит, когда в аргументе указывается имя пути, потому что (а) это не тот вопрос, о котором идет речь, и (б) он находится в дальнейшем прочтении.
JdeBP
6
Нет, мы не. Было бы неправильно говорить о разделах вместо дисков здесь user unknown. Начнем с того, что разделы не совпадают с томами, а буквы дисков отображаются на тома, а не на разделы. И когда кто-то говорит на этом уровне абстракции, буква диска и текущий диск являются общепринятыми терминами, используемыми здесь, в указанном дальнейшем чтении и даже в cd /?тексте справки.
JdeBP
2
Я использовал эту команду по крайней мере 20 лет и никогда не знал этого.
Крис Балланс
54

Боюсь, это неправильно. Это правда со времен DOS, но командная строка в Windows NT и более поздних версиях не DOS. В командной строке, которую все используют сегодня, у вас есть ключ / D. Ключ / d изменит текущий каталог указанного диска и перейдет в этот каталог. Ключ / d должен быть указан перед путем. Например:

C:\> cd /d D:\foo\bar\
D:\foo\bar\>

командная строка windows cd

Мультивселенная ИТ
источник
4
+1, потому что я узнал что-то новое, но я не думаю, что все, что я написал, неверно.
Coneslayer
3
Ваш ответ тоже правильный, Multiverse IT, но конуслайер не ошибся. Спасибо за ваши старания. Я научился двум замечательным трюкам по этому вопросу.
nicorellius
2
С моей точки зрения "То, что вы хотите, это просто ... D:" неверно. Да, это работает и является действительным методом достижения цели, но это, строго говоря, то, что он должен хотеть. Кроме того, способ формулировки комментария подразумевает, что вы не можете использовать CD для этого - это неверно.
Multiverse IT
1
его главная проблема заключается в том, что «я не могу добраться до диска D». Таким образом, другой ответ является правильным. Ваше решение занимает всего один шаг меньше (что хорошо). Это не делает другого неправильным.
Gnoupi
1
Хм, "чего он должен хотеть". Звучит довольно предположительно ;-)
nicorellius
20

CD означает C висящий D irectory, а не изменить диск. Так что это не изменится на D: вот так. Для этого вам нужно просто ввести букву диска

например

д:

IUnknown
источник
16
CD / DD: изменения дисков и каталогов ...
Майкл С.
Но d: это раздел, а не диск.
пользователь неизвестен
1
@userunknown В эпоху Dos 1.0, когда была разработана оболочка, существовали только гибкие диски, которые AFAIK нельзя разбить на разделы. Первоначальная поддержка жесткого диска была только для основного (первого) раздела на диске. Расширенная поддержка разделов не была добавлена ​​до позже.
Дэн Нили,
Я не вижу ни MS-DOS 1.0, ни 1.0. Возможно, вы не можете разбить диск с помощью программ MS-DOS, но вы можете установить MS-DOS на многораздельный диск. Я полагаю, что MS-DOS не поддерживается, и тег есть, потому что многие пользователи считают, что cmd.exe и MS-DOS означают одно и то же, что является еще одной ошибкой, которую необходимо устранить. Кстати: MS-DOS 1.0 никогда не был опубликован.
пользователь неизвестен
1
@userunknown Проектные решения относятся к начальным версиям DOS. Изменение поведения повредило бы старые программы (см. Комментарий Дэниэла Бека ниже). PS; согласно Википедии MS DOS 1.x был опубликован.
Дэн Нили
9

Рабочий каталог в cmd.exe поддерживается на volume-by-volumeоснове; Рабочий каталог для C:диска отличается от рабочего каталога для D:диска.

Когда вы передаете только букву диска cd, он напечатает рабочий каталог для указанного диска.

В вашем случае рабочим каталогом D:диска является сам корень тома D:\.

Для того, чтобы изменить объемы от C:до D:просто ввести букву диска:

C:\>D:
D:\>
Эндрю Ламберт
источник
2
CD / DD: изменения дисков и каталогов ...
Майкл С.
1
Разделы отображаются на букву диска и практически совпадают с буквой диска. Вы также можете сопоставить каталог или общий ресурс с диском, и они ведут себя одинаково.
Марти Фрид
8

Используйте cd / DD: для этого. Вы также можете указать пути.

Майкл С.
источник
5

Если вы хотите изменить диск в командной строке DOS, вам просто нужно написать:

[Drive Letter]:

Например, если вы хотите перейти на диск D: \, вам просто нужно ввести в командной строке следующее:

D:
Darsak
источник
Вы меняете раздел с помощью [Drive Letter]:, поверьте мне или проверьте это!
пользователь неизвестен
Ого, это делает все намного проще. Я всегда забываю, /dтак что это делает переключение намного быстрее.
Матеин Улхак
2

pushdработает, даже если вам нужно перейти к подкаталогу диска, например D:\Tests\Logs.

Просто используйте это так:

pushd D:\Tests\Logs

Если вы хотите вернуться к предыдущему каталогу, используйте popd:

C:\Users>pushd D:\Tests\Logs
D:\Tests\Logs>popd
C:\Users>
BladeMight
источник
0

При переходе к параметру поиска на панели инструментов и поиску cmd или выбрав в Windows All приложение, выбрав командную строку, он перейдет в другую командную строку. Вместо этого попробуйте нажать кнопку Windows + R и найти cmd, который требуется для диска C:>. Оттуда вы можете перейти к D:> или где вам нужно

user609712
источник