我无法在 Windows 中使用 cmd 导航到我的 SD 卡目录

mas*_*nix 3 windows-10

我有一个带有 32GB SD 卡的 Surface pro 3。我已将 OneDrive 位置设置为此 SD 卡(因为他们删除了占位符功能,因此我被迫下载所有内容)。分配给 SD 卡的驱动器号是D:\,由disk management实用程序验证。

问题是我无法使用命令行访问此驱动器/卡 - 常规和管理员都提升了。即,该命令cd D:\只是不返回任何内容并保留在当前文件夹中。

这导致相当多的命令行工具在我的计算机上中断,因为它不返回错误(但似乎没有任何效果)。

下面标记的答案是正确的。但是,有关更多信息,请尝试CMD cd 到除 C:\ 之外的其他驱动器不工作

Che*_*yDT 6

Windows 具有每个驱动器电流路径的概念,至少在外壳中是这样。这是从过去开始,您可能一直在使用两张软盘,并在其中打开不同的文件夹,然后在它们之间切换。实际上,我相信子文件夹只在 DOS 2.0 中引入,在此之前只有不同的驱动器,没有反斜杠,也没有cd.

因此,切换驱动器是这样完成的:

C:\> D:

D:\>
Run Code Online (Sandbox Code Playgroud)

...同时更改当前目录之一是使用cd这样的:

D:\> cd relative_folder

D:\relative_folder> cd D:\absolute_folder

D:\absolute_folder>
Run Code Online (Sandbox Code Playgroud)

可以在不切换到该驱动器的情况下更改另一个驱动器上的目录,这是您不小心所做的:

D:\absolute_folder> cd C:\test

D:\absolute_folder> C:

C:\test> D:

D:\absolute_folder>
Run Code Online (Sandbox Code Playgroud)

也可以通过指定不带反斜杠的驱动器号来引用另一个驱动器的当前路径:

D:\absolute_folder> dir C:
Directory listing of C:\test
...

D:\absolute_folder> dir C:hello
Directory listing of C:\test\hello
...

D:\absolute_folder> dir C:\
Directory listing of C:\
...

D:\absolute_folder>
Run Code Online (Sandbox Code Playgroud)

以及解决您的问题的方法:在现代 Windows 中,该cd命令还具有/d隐式切换驱动器的开关:

D:\absolute_folder> cd /d C:\something

C:\something>
Run Code Online (Sandbox Code Playgroud)

附注:针对单个驱动电流通路(!当前进程-当前的路径是每个进程的)存储为魔隐环境变量叫=C:=D:等。

由于等号,您无法正常分配它们,但是您可以使用echo %=C:%等或通过列出所有环境变量(包括使用 hack 的隐藏变量)来查看它们(注意双引号):

C:\something> set "
=C:=C:\something
=D:=D:\absolute_folder
...
Run Code Online (Sandbox Code Playgroud)

您还可以使用cd没有任何路径的驱动器号查看另一个驱动器的当前路径:

C:\something> cd D:
D:\absolute_folder

C:\something>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看:https : //blogs.msdn.microsoft.com/oldnewthing/20100506-00/?p=14133

(请注意,在 shell 之外,程序不必关心这一点,因为 Windows 系统实际上只使用一个当前工作目录,而不是每个驱动器一个。“每个驱动器”的东西只是一个构建的东西在外壳的顶部,因为它从 DOS 开始就是这样工作的。)