博客很少使用cmd和PowerShell进行编程因此该博客是记录cmd和PowerShell中切换工作目录的方法。在cmd中切换目录路径的命令是cd。如果只是在同一个盘符比如都在C盘里移动直接输入cd加上目标路径即可如Bash Shell中那样需要注意的是cd \指的是返回当前盘符的根目录。需要注意的是在cmd中直接输入cd D:\是无法切换到D盘的cmd会默默记录这个路径但不会跳转。如果你想切换到其他盘符有两种方法一是直接输入盘符最常用比如D:二是在cd后面加上/d参数。在PowerShell中切换目录路径的命令同样是cd但这是系统为了照顾大家习惯而设立的别名(Alias)它背后的原生命令叫做Set-Location或者缩写sl。在PowerShell中可以直接跨盘切换。为什么cmd在跨盘切换时会默默记录而不是直接切换呢这起源于45年前1981年MS-DOS时代的一个极其硬核、极其超前的架构设计——多盘符独立工作目录机制(Per-drive Current Directories)。在Linux中整个系统只有一个根目录/你只能同时处于一个位置。但在Windows及 DOS中每一个盘符(C、D、E)在后台都是一个独立的“世界”它们各自拥有一个属于自己的“当前目录”。当你在C盘运行时输入cd D:\Toolscmd的内心独白其实是“收到我现在把D盘的指针拨到\Tools文件夹。但是因为你没有明确叫我切换整个盘符没加/d所以我本人的肉身依然留在C盘继续为你服务。”正是因为cmd帮每一个盘符记住了各自的路径你就可以在不离开当前盘符的情况下极其高效地对其他盘符进行“盲操作”。假设你现在正在C盘编写代码需要把C盘的大量文件分别复制到D盘的D:\Backup\Video和E 盘的E:\Work\Project。如果没有这个记录机制像Linux那样你每次复制文件都必须输入冗长、完整的绝对路径copy movie.mp4 D:\Backup\Video\ copy doc.pdf E:\Work\Project\因为cmd默默记住了路径你可以这样玩先给各个盘符“定好位”这就是默默记录的意义cd D:\Backup\Video cd E:\Work\Project接下来你就可以留在C盘用最极简的命令进行跨盘操作。此时D:和E:两个字就直接代表了你刚才定好位的深层目录copy movie.mp4 D: copy doc.pdf E:cmd会自动把D:解析为你刚刚设置好的D:\Backup\Video。你甚至可以在C盘直接查看D盘那个深层目录下的文件同样不需要打一长串路径dir D:这个设计之所以诞生是因为1980年代的电脑没有硬盘只有两个插软盘的驱动器A:驱和B:驱。当时的人们习惯于在A:盘插入“系统和软件软盘”并把目录切到A:\DOS\Utilities。在B:盘插入“数据软盘”并把目录切到B:\Data\1983Report。由于软盘容量极小、读取极慢操作系统必须让A:和B:两个盘符各自死死记住自己的当前目录。这样用户在A盘运行工具时工具才能直接去B盘的当前目录下读写数据而不需要用户频繁地、苦哈哈地在两个软盘里切来切去。微软在开发PowerShell时意识到现代人已经很难理解这种40年前的软驱逻辑了。所以在PowerShell中如果你输入cd D:\Tools它会立刻、直接帮你跳转到D盘的Tools目录下。它不再为每个盘符保留独立的隐式路径而是统一采用了类似于Linux的全局单一路径逻辑。所以cmd的这个“默默记录”的怪癖其实是一块至今仍在完美运转的计算机远古活化石。