Я случайно обнаружил, что если я делаю:
dir C:\
Я получаю список файлов, которые являются прямыми потомками диска C: в корне.
Однако, если я сделаю:
dir C:
Я получаю огромный список файлов, в которых я даже не уверен, где они находятся (DLL, EXE, CPL и т. Д.).
Знаете ли вы, почему это происходит и откуда этот список?
dir c:
возвращает список файлов в вашем текущем каталогеОтветы:
Указание
DIR location
покажет вам содержимое локации.Указание
C:
для многих команд, включаяDIR
команду, относится к диску C и относится к текущему каталогу. Чтобы увидеть ваш текущий каталог, введите:Команда
cd
обычно используется для изменения текущего каталога. Тем не менее, в MS-DOS (и аналогичных операционных системах, включая современные Microsoft Windows, но не включая Unix), запускcd
сам по себе покажет вам текущий каталог.По всей вероятности, если вы не использовали
cd
команду, то ваш текущий каталог, вероятно, является каталогом, в который была установлена ваша операционная система. (По крайней мере, это обычное поведение для систем Microsoft Windows.)Ты можешь сделать это:
Это покажет вам содержимое
C:\Program Files
Точно так же вы можете сделать что-то вроде:
copy C:*.*
и все содержимое из текущего каталога будет скопировано.Когда вы указываете
C:\
, то обратная косая черта указывает на корневой каталог, также известный как каталог верхнего уровня. Это может или не может быть то же самое, что ваш текущий каталог.Если вы просто укажете
DIR \
, то текущий диск будет принят. (Вы можете ввести что-то вродеC:
илиD:
, как целую команду (в отдельной строке), чтобы изменить, какой диск считается «текущим диском».) Если вы просто укажетеDIR
, то текущий диск и текущий каталог будут предполагается.источник
TL; DR -
dir C:
перечислит текущий каталог воC:
что бы то ни стало, в отличие отdir C:\
которого всегда будет перечислен\
кореньC:
.Длинная история ... В командной строке
cmd
запоминает текущий каталог для каждого диска, к которому он обращался во время сеанса.Текущий каталог на диске,
X:
отличный от текущего, может быть установлен с помощьюcd X:\etc
(без/d
переключателя, который также изменил бы текущий диск наX:
), и возвращаетсяcd X:
(без\
) - оба отмечены вcd /?
справке:См. Почему каждый диск имеет свой текущий каталог? для фона, включая эту цитату.
strange environment variables
Упоминается в связанном посте Каковы эти странные = C: переменные окружения? можно увидетьset ""
в командной строке cmd, например:источник
c:\Users\<you>
),c:\windows\system32
илиc:\windows\temp
. Никогда не предполагайте ничего из этого: всегда указывайте или переключайтесь на каталог, на который вы хотите посмотреть, вместо того чтобы полагаться на то, что какой-то конкретный параметр по умолчанию применяется последовательно.Причина, по которой вы получаете два разных каталога, проста.
\
разница.dir C:\
просит список каталоговC
диска в его\
.\
это корневая папкаdir C:
запрашивает список каталогов, где вы находитесь (или был последним, если вы меняли диски)Если вы находитесь на
C
диске и просто печатаетеdir
и нажимаетеenter
, вы получите то же самое содержимоеdir C:
. Если вы находитесь на другом диске и печатаете,C:
чтобы переключиться обратно наC
диск, то вы окажетесь в каталоге, который вы видели при вводеdir C:
.источник
Поскольку это не StackOverflow, в лучшем случае это должен быть только комментарий, но он не подходит :.
.NET Framework (возможно, через Win32) отражает текущий каталог для текущего диска:
источник
Вы запускаете две команды вместе.
c:
сама по себе команда для перехода на ПРЕДЫДУЩЕЕ МЕСТО на диске C :. Таким образом, он будет содержать местоположение до того, как вы смените диск с помощьюd:
илиe:
.dir
это команда, используемая для отображения содержимого каталога.Таким образом, в основном вы размещаете содержимое своей предыдущей папки на диске C: даже если вы находитесь на другом диске.
источник