我意外发现,如果这样做:
dir C:\
我在根目录中获得了C:驱动器的直接子文件列表。
但是,如果我这样做:
dir C:
我得到了大量文件,甚至不知道它们在哪里(DLL,EXE,CPL等)。
您知道为什么会发生这种情况吗?此清单来自何处?
我意外发现,如果这样做:
dir C:\
我在根目录中获得了C:驱动器的直接子文件列表。
但是,如果我这样做:
dir C:
我得到了大量文件,甚至不知道它们在哪里(DLL,EXE,CPL等)。
您知道为什么会发生这种情况吗?此清单来自何处?
Answers:
指定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
,则当前驱动器和当前目录将为假定。
TL; DR - 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?可以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
[...]
c:\Users\<you>
),c:\windows\system32
或c:\windows\temp
。但是,永远不要假设任何一种:始终声明或切换到要查看的目录,而不要依赖于始终应用任何特定的默认值。
由于这不是StackOverflow,因此充其量只能是一条评论,但不适合:。
.NET框架(可能通过的Win32)的确反映了当前目录下的当前驱动器:
> (curdir)
C:\Utils\DotLisp\My Stuff
> (.FullName (DirectoryInfo. "C:"))
C:\Utils\DotLisp\My Stuff
> (.FullName (DirectoryInfo. "G:"))
G:\
> (set (curdir) "G:/Temp/Emails")
G:/Temp/Emails
> (curdir)
G:\Temp\Emails
> (.FullName (DirectoryInfo. "G:"))
G:\Temp\Emails
> (.FullName (DirectoryInfo. "C:"))
C:\
dir c:
返回当前目录中的文件列表