目录 C: 与目录 C:\

Nun*_*uno 17 windows shell command-line cmd.exe

我偶然发现,如果我这样做:

dir C:\
Run Code Online (Sandbox Code Playgroud)

我得到了根目录中 C: 驱动器的直接子文件的列表。

但是,如果我这样做:

dir C:
Run Code Online (Sandbox Code Playgroud)

我得到了一大堆文件,我什至不确定它们在哪里(DLL、EXE、CPL 等)。

你知道为什么会发生这种情况吗?这个列表是从哪里来的?

dxi*_*xiv 21

TL; DR -dir C:将列出当前目录C:不管这恰好是,相对于dir C:\将始终列出\的根C:

长话短说... 在命令行提示符下,cmd记住它在会话期间访问的每个驱动器的当前目录。

X:可以设置当前驱动器以外的驱动器上的当前目录cd X:\etc(没有/d开关也会将当前驱动器更改为X:),并由cd X:(没有\)返回- 两者都在cd /?帮助中注明:

键入 CD drive: 以显示指定驱动器中的当前目录。

除了更改驱动器的当前目录外,还可以使用 /D 开关更改当前驱动器。

请参阅为什么每个驱动器都有自己的当前目录?背景,包括这句话。

记住每个驱动器的当前目录自 [ nb DOS ]以来一直被保留,至少对于批处理文件,尽管在 Win32 中实际上没有像每个驱动器当前目录这样的概念。在 Win32 中,您所拥有的只是一个当前目录。每个驱动器都有自己的当前目录的外观是由 cmd.exe 伪造的,它使用奇怪的环境变量来创建批处理文件的错觉,即每个驱动器都有自己的当前目录。

strange environment variables在链接后简称环境变量:这些是什么奇怪= C?可以set ""在 cmd 提示符处看到,例如:

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
[...]
Run Code Online (Sandbox Code Playgroud)


TOO*_*GAM 19

指定DIR location将显示该位置的内容。

C:在很多命令上指定,包括DIR命令,指的是C盘,指的是当前目录。要查看当前目录,请键入:

c: 
cd
Run Code Online (Sandbox Code Playgroud)

cd命令通常用于更改当前目录。但是,在 MS-DOS(以及类似的操作系统,包括现代 Microsoft Windows,但不包括 Unix)中,单独运行cd将显示当前目录。

很有可能,如果您没有使用过该cd命令,那么您的当前目录可能就是您的操作系统安装到的目录。(至少,这是 Microsoft Windows 系统的常见行为。)

你可以这样做:

cd "C:\Program Files"
cd
dir c:
Run Code Online (Sandbox Code Playgroud)

这将显示您的内容 C:\Program Files

同样,您可以执行以下操作:copy C:*.*并且将复制当前目录中的所有内容。

当您指定时C:\,反斜杠表示“根”目录,也称为“顶级”目录。这可能与您当前的目录相同,也可能不同。

如果您只指定DIR \,则将假定当前驱动器。(您可以键入类似C:或 的内容D:作为整个命令(单独一行),以更改将哪个驱动器视为“当前驱动器”。)如果您只指定DIR,则当前驱动器和当前目录将是假定。


Kel*_*ari 5

您获得两个不同目录的原因很简单。这\就是区别。

dir C:\正在请求C驱动器的目录列表\\是根文件夹。

dir C:是要求你在哪里的列出该目录(或最后一次,如果更改驱动器)

如果您在C驱动器上,只需键入dir并点击enter,您将获得相同的内容dir C:。如果您在不同的驱动器上,并键入C:以更改回C驱动器,那么您将最终进入您键入时看到的目录中dir C: