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
,则当前驱动器和当前目录将是假定。
您获得两个不同目录的原因很简单。这\
就是区别。
dir C:\
正在请求C
驱动器的目录列表\
。 \
是根文件夹。
dir C:
是要求你在哪里的列出该目录是(或最后一次,如果更改驱动器)
如果您在C
驱动器上,只需键入dir
并点击enter
,您将获得相同的内容dir C:
。如果您在不同的驱动器上,并键入C:
以更改回C
驱动器,那么您将最终进入您键入时看到的目录中dir C:
。