我偶然发现如果我这样做:
dir C:\
我获得了根目录中 C: 驱动器的直接子文件列表。
但是,如果我这样做:
dir C:
我得到了一个很长的文件列表,我甚至不确定它们在哪里(DLL,EXE,CPL等)。
你知道为什么会发生这种情况以及这份名单从何而来吗?
答案1
指定DIR location
将显示该位置的内容。
C:
在许多命令(包括该命令)上指定DIR
是指 C 驱动器,并是指当前目录。要查看当前目录,请键入以下命令:
c:
cd
该cd
命令通常用于更改当前目录。但是,在 MS-DOS(以及类似的操作系统,包括现代 Microsoft Windows,但不包括 Unix)中,运行该命令cd
本身会显示当前目录。
很有可能,如果您没有使用该cd
命令,那么您的当前目录可能是您的操作系统安装到的目录。(至少,这是 Microsoft Windows 系统的常见行为。)
你可以这样做:
cd "C:\Program Files"
cd
dir c:
这将向您显示C:\Program Files
类似地,您可以执行类似操作:copy C:*.*
当前目录中的所有内容都将被复制。
当您指定 时C:\
,反斜杠表示“根”目录,也称为“顶级”目录。它可能与您的当前目录相同,也可能不同。
如果您只指定DIR \
,则将假定当前驱动器。(您可以键入类似C:
或 的内容D:
,作为整个命令(单独占一行),以更改哪个驱动器被视为“当前驱动器”。)如果您只指定DIR
,则将假定当前驱动器和当前目录。
答案2
总结-dir C:
将列出当前目录,C:
无论它是什么,而不是dir C:\
始终列出\
的根目录C:
。
长话短说...在命令行提示符下,cmd
记住会话期间访问的每个驱动器的当前目录。
可以使用(不带开关,这也会将当前驱动器更改为)X:
设置当前驱动器以外的驱动器上的当前目录,并通过(不带)返回- 两者均在帮助中注明:cd X:\etc
/d
X:
cd X:
\
cd /?
键入 CD 驱动器: 显示指定驱动器中的当前目录。
使用 /D 开关更改当前驱动器此外更改驱动器的当前目录。
看为什么每个驱动器都有自己的当前目录?作为背景,包括这句话。
记住每个驱动器的当前目录自此一直保留[NB DOS],至少对于批处理文件来说是这样,尽管在 Win32 中实际上没有每个驱动器的当前目录这样的概念。在 Win32 中,您拥有的只是一个当前目录。每个驱动器都有自己的当前目录的假象是 cmd.exe 的伪装,它使用奇怪的环境变量来给批处理文件造成每个驱动器都有自己的当前目录的假象。
strange environment variables
链接帖子中提到的这些奇怪的 =C: 环境变量是什么?可以在 cmd 提示符下看到set ""
,例如:
C:\temp>cd X:\etc
C:\temp>cd C:
C:\temp
C:\temp>cd X:
X:\etc
C:\temp>set ""
=C:=C:\temp
=X:=X:\etc
ALLUSERSPROFILE=C:\ProgramData
[...]
答案3
你得到两个不同目录的原因很简单。就是\
它们之间的区别。
dir C:\
C
正在请求驱动器所在目录的列表\
。 \
是根文件夹。
dir C:
正在请求您所在位置的目录列表是(或者是最后一个,如果你更换了驱动器)
如果您在C
驱动器上输入dir
并点击enter
,您将获得相同的内容dir C:
。如果您在另一个驱动器上,并输入C:
以更改回C
驱动器,那么您最终将进入您输入 时看到的目录dir C:
。
答案4
您正在同时运行两个命令。本身就是一个用于更改 C: 驱动器上先前位置的命令。因此,它将保留您使用或c:
更改驱动器之前的位置。是用于列出目录内容的命令。d:
e:
dir
因此,基本上,即使您在另一个驱动器上,您也会列出 C: 驱动器上以前的文件夹的内容。