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


226

Це може бути дурним питанням, і я думаю, що я шукав деінде, щоб знайти відповідь ... Можливо, це проблема шляху, але коли я відкриваю командний рядок і набираю C:\>:

cd D:\

Я не можу дістатися до диска D. Навіть якщо я набираю:

cd D:\<folder name>

command.exeБуде автоматично заповнити рядок за допомогою клавіші табуляції, тому він знає , де я перебуваю. Він просто не друкує, щоб відобразити результат, або насправді мене не туди. Ця проблема існує і для мережевих накопичувачів.

Тепер, якщо я використовую команду chdir( cd) таким чином:

chdir D: або cd d:

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

Я відчуваю, що пропускаю щось просте.


Я використовую його pushdзамість cdмайже всюди, оскільки він веде себе набагато краще в таких ситуаціях.
Гойу

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>

16
У ситуації "найшвидшого пістолета на заході" виграє той, хто викладе найкраще пояснення. +1, і я видаляю подібну відповідь.
Gnoupi

2
Видалено і мою. Немає необхідності у зайвій безладі.
th3dude

3
-1 а) ви не вказали, що cd e:\softwareлінія нічого не робила. Ніби ви вставили там команду фантомних компакт-дисків Чому? Змусити його подумати, що ти використовував компакт-диск, коли тебе не було? і б) як на землі не можна не згадати про /dввімкнення CD в певний каталог на іншому диску? Він сказав, використовуючи команду cd, тому, хоча це добре, що ви вказали, як це можна зробити без команди CD d:<ENTER>, ви повинні сказати для команда CD такожcd /d d:cd /d d:\blah
барлоп

3
@barlop The cd E:\softwareНЕ робить нічого. Він змінює поточний каталог розділу E у softwareпапку, що демонструється при остаточному переході на розділ E з E:. Хороша пропозиція з CD / D, хоча.
miyalys

@miyalys цікавий та чудовий момент
барлоп

78

Він зробив роботу, так як команда призначена для роботи.

Ви просто не знаєте, як це насправді має працювати.

Ви не використовуєте оболонку Unix або Linux. cdКоманду в інтерпретатор командного рядка Microsoft, не поводиться як cdкоманди в таких оболонках робити. Він поводиться дещо інакше. Зокрема, це не завжди змінює каталог . У оболонках Unix та Linux cdлише коли-небудь встановлюється робочий каталог. Інтерпретатор команд Microsoft cdіноді запитує його. Окремої pwdкоманди немає , так cdі два завдання.

Якщо ви не даєте йому ніяких аргументів або аргументу, який є лише буквою диска та двокрапкою без шляху, то він повідомляє про поточний каталог замість того, щоб змінювати його . Якщо ви не даєте йому ніяких аргументів, він повідомляє про поточний каталог поточного диска процесу інтерпретатора команд. Якщо ви даєте йому лише літеру диска та двокрапку як аргумент, він повідомляє про поточний каталог цього інтерпретатора процесу обробки інтерпретатора. Кожен диск має свій власний поточний каталог в інтерпретаторі команд. (Це вигадка, яку підтримують бібліотеки часу виконання для Microsoft та кількох інших виробників, що реалізують різні мови програмування. Сам Win32 не працює таким чином.)

Отже, коли ви подали це d:як аргумент, він повідомив вам про поточний каталог процесу інтерпретатора команд на диску D, який, як і раніше D:\. Якби ви взагалі не наводили жодних аргументів, це повідомило C:\б вам.

Якщо ви хочете, щоб cdкоманда завжди знаходилась у встановленому режимі і ніколи не знаходилась у режимі запитів, вам потрібно додати її /Dдо неї. Це змушує команду завжди знаходитись у встановленому режимі, а також розширює її, щоб вона змінювала поточний диск, а також зміна поточного каталогу диска. (Іншими словами, він працює більше, як насправді базовий API Win32.)

Так, наприклад, командний рядок

cd / dd:
змінить каталог на будь-який поточний каталог на диску D, а також змінить поточний диск на диск D.

Якщо ви хочете змінити поточний привід процесу інтерпретатора команд в іншому випадку, cdкоманда - це не спосіб. Виконайте це, просто набравши літеру диска та двокрапки:

d:

Подальше читання

  • Програмне забезпечення JP (2011). On-line довідка CD / CHDIR TCC.
  • Корпорація Майкрософт (2001). Чдір (CD) . Посилання на командний рядок TechNet Windows XP A – Z.


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 змінить поточний каталог вказаного диска AND зміниться в цей каталог. Перемикач / d повинен бути вказаний перед шляхом. Наприклад:

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

командний рядок windows cd


4
+1, тому що я дізнався щось нове, але не думаю, що щось, що я написав, є невірним.
конічний шар

3
Ваша відповідь також правильна, Multiverse IT, але спільний шар не був помилковим. Дякуємо за ваші зусилля. На цьому питанні я навчився двох чудових хитрощів.
nicorellius

2
З моєї точки зору, "Те, що ти хочеш, просто ... D:" невірно. Так, він працює і є дійсним методом досягнення мети, але це не так, строго кажучи, чого він повинен хотіти. Крім того, те, як сформульовано коментар, означає, що ви не можете використовувати компакт-диск для цього - що це невірно.
Multiverse IT

1
його головне питання - "Я не можу дістатися до диска D". Інша відповідь правильна. Ваше рішення займає просто на крок менше (що добре). Це не робить інше неправильним.
Gnoupi

1
Хм, "чого він повинен хотіти". Звучить досить імовірно ;-)
nicorellius

20

CD означає C висить D irectory, а не змінити диск. Отже, це не змінилося б на D: так. Для цього вам доведеться просто ввести букву диска

напр

d:


16
cd / DD: змінює диски та каталоги ...
Michael S.

Але d: це розділ, а не привід.
користувач невідомий

1
@userunknown В епоху Dos 1.0, коли оболонку розробляли, існували лише дискети, які AFAIK не можна розділити. Початкова підтримка hardrive була лише для основного (першого) розділу на диску. Розширена підтримка розділів не була додана пізніше.
Ден Нелі

Я не бачу тегу MS-DOS 1.0, ані 1.0. Можливо, ви не можете розділити диск з програмами MS-DOS, але ви можете встановити MS-DOS на розділений диск. Я думаю, що MS-DOS не підтримує, і тег є, тому що багато користувачів вважають, що cmd.exe і MS-DOS означає те саме, що є ще однією помилкою. Пропозиції: MS-DOS 1.0 ніколи не публікувався.
користувач невідомий

1
@userunknown Проектні рішення сягають початкових версій DOS. Зміна поведінки порушила б старі програми (див. Коментар Даніеля Бека нижче). PS; за даними Wikipedia MS DOS 1.x опубліковано.
Ден Нілі

9

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

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

У вашому випадку, робочий каталог D:диска є кореневим обсягом, D:\.

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

C:\>D:
D:\>

2
cd / DD: змінює диски та каталоги ...
Michael S.

1
Розділи відображаються на букву накопичувача і практично не відрізняються від диска. Ви також можете зіставити каталог або поділитися на диску, і вони поводяться однаково.
Marty Fried

8

Використовуйте CD / DD: для цього. Ви також можете вказати шляхи.


5

Якщо ви хочете змінити диск у командному рядку DOS, вам просто потрібно написати:

[Drive Letter]:

Наприклад, якщо ви хочете перейти до диска D: \, тоді вам просто потрібно набрати наступне в командному рядку:

D:

Ви змінюєте розділ [Drive Letter]:, повірте мені, або протестуйте його!
користувач невідомий

О, вау, це робить речі пекло набагато простішими. Я завжди забуваю, /dтому перехід стає набагато швидшим.
Mateen Ulhaq

2

pushdпрацює навіть у тому випадку, коли вам потрібно перейти до підкаталога, наприклад D:\Tests\Logs.

Просто використовуйте його так:

pushd D:\Tests\Logs

Якщо ви хочете повернутися до попереднього використання каталогу popd:

C:\Users>pushd D:\Tests\Logs
D:\Tests\Logs>popd
C:\Users>

0

Поки ви збираєтесь шукати параметр на панелі інструментів і шукаєте cmd або вибираючи командний рядок Windows All app select, тоді він переходить до іншої командної лінії. Замість цього спробуйте натиснути кнопку Windows + R та шукайте cmd, який потрібно на C:> диск. Звідти ви можете перейти до D:> або куди завгодно

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