我有一台 Surface Pro 3,配有 32GB SD 卡。我已将 OneDrive 位置设置为这张 SD 卡(因为他们删除了占位符功能,所以我被迫下载所有内容)。分配给 SD 卡的驱动器号是D:\
,已通过disk management
实用程序验证。
问题是我无法使用命令行访问该驱动器/卡 - 无论是常规还是管理员提升。即,该命令cd D:\
只是不返回任何内容并停留在当前文件夹中。
这导致我的电脑上相当多的命令行工具崩溃,因为它没有返回错误(但似乎没有任何效果)。
下面标记的答案是正确的。但是,如需更多信息,请尝试CMD cd 到除 C:\ 之外的其他驱动器不起作用
答案1
与 Linux 不同,Windows 很奇怪。
只需输入此命令
D:
或者
D:\
这将切换到驱动器
答案2
Windows 至少在 shell 中具有每个驱动器当前路径的概念。这源自过去,那时您可能使用两张软盘,并在其中打开不同的文件夹,并在它们之间切换。实际上,我相信子文件夹是在 DOS 2.0 中引入的,而在此之前只有不同的驱动器,没有反斜杠,也没有cd
。
因此,切换驱动器如下:
C:\> D:
D:\>
cd
...同时使用如下方式更改当前目录之一:
D:\> cd relative_folder
D:\relative_folder> cd D:\absolute_folder
D:\absolute_folder>
无需切换到另一个驱动器即可更改该驱动器上的目录,这就是您意外执行的操作:
D:\absolute_folder> cd C:\test
D:\absolute_folder> C:
C:\test> D:
D:\absolute_folder>
也可以通过仅指定不带反斜杠的驱动器号来引用另一个驱动器的当前路径:
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>
问题的解决方案是:在现代 Windows 中,该cd
命令有一个开关/d
可以隐式切换驱动器:
D:\absolute_folder> cd /d C:\something
C:\something>
旁注:单个驱动器的当前路径(对于当前进程 - 当前路径是每个进程的!)存储为称为的神奇隐藏环境变量=C:
,=D:
等等。
由于等号的原因,您无法正常分配它们,但您可以使用echo %=C:%
等来查看它们,或者通过使用 hack 列出所有环境变量(包括隐藏变量)(请注意双引号):
C:\something> set "
=C:=C:\something
=D:=D:\absolute_folder
...
cd
您还可以使用没有任何路径的驱动器号来查看另一个驱动器的当前路径:
C:\something> cd D:
D:\absolute_folder
C:\something>
欲了解更多信息,请查看:https://blogs.msdn.microsoft.com/oldnewthing/20100506-00/?p=14133
(请注意,在 shell 之外,程序不必关心这一点,因为 Windows 系统实际使用的当前工作目录只有一个,而不是每个驱动器一个。“每个驱动器”的东西只是由 shell 在其顶部构建的东西,因为它自 DOS 以来就是这样工作的。)