MS-DOS 中 CD 命令的执行逻辑(为什么有时候看起来没有起作用)
MS-DOS 中 CD 命令的用法
CD 命令可以改变我们当前的工作目录,直接输入 CD 不加参数的话可以显示当前的目录。输入 cd /? 可以看到关于 CD 命令的用法帮助,其他 DOS 命令也类似,下面是 CD 命令的帮助说明:
显示当前目录名或改变当前目录。
CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]
.. 指定要改成父目录。
键入 CD drive: 显示指定驱动器中的当前目录。
不带参数只键入 CD,则显示当前驱动器和目录。 # 注意,这里说显示驱动器和目录,二者分开说了
使用 /D 开关,除了改变驱动器的当前目录之外,
还可改变当前驱动器。
...(后面的省略)
可以看到 CD 命令就是直接在后面加路径,例如,要进入 Download 目录:
C:\Users\AULA> # 这是当前的工作目录 C:\Users\AULA>cd Downloads C:\Users\AULA\Downloads>
CD 命令为什么会看起来没有起作用
那么,如果我们要进入 D 盘的一个目录,例如:D:\BilibiliDownload,那么我们输入:
C:\Users\AULA>cd d:BilibiliDownload # 子目录不用加斜杠 \ ,按 tab 键可以自动补全
C:\Users\AULA>
结果只是输出了一个空行,貌似 CD 命令并没有起到切换目录的作用。事实上,CD 命令的作用是用于切换目录,而在 MS-DOS 中,我们的路径是包含驱动器号与目录的,二者是不同的,这也就是在 CD 命令的帮助中为什么要将二者分开讲的原因。
上面这条命令执行后也没有出现错误,事实上它也是起了作用的。这里有两个不同的地方:驱动器的当前目录和我们的工作目录。在 MS-DOS 中,将每一个磁盘驱动器都视为一个单独的目录树,每一个驱动器都可以有一个当前目录,而工作目录就是 CMD 窗口左侧的前缀 C:\Users\AULA> 。
可以输入 cd drive: 查看对应驱动器的当前目录:
C:\Users\AULA>cd d: D:\BilibiliDownload # 驱动器 D: 的当前目录 C:\Users\AULA>cd c: C:\Users\AULA # 驱动器 C: 的当前目录
我们之前的那条命令改变了驱动器 D: 的当前目录,并没有改变我们的工作目录,因为 CD 命令不能跨驱动器切换。可以直接先输入 D: 切换驱动器后,再用 CD 命令进入相应的目录。或者添加参数 /D 强制切换工作目录:
C:\Users\AULA>cd /d d:\BilibiliDownload
d:\BilibiliDownload>
现在工作路径已经成功切换到了 D 盘。
总结
在 MS-DOS 中,CD 命令默认是在同一个目录树中切换工作路径,Windows 中每一个驱动器都是一个单独的目录树,每个驱动器都有一个当前目录。直接输入路径跨驱动器访问,只会改变对应驱动器的当前目录,不会更改 CMD 的工作目录,需要添加参数 /d 强制切换。