关于Command Prompt与PowerShell驱动器切换机制差异的技术咨询
关于Command Prompt与PowerShell驱动器切换机制差异的技术咨询
这是个特别好的问题!其实背后核心是两个工具的历史传承和设计理念差异在起作用,咱们慢慢说:
先聊聊CMD的“怪异”行为根源
CMD是从DOS时代一步步演化过来的,而DOS的设计是完全围绕磁盘分区展开的——在那个单任务、软盘/硬盘分区为主的年代,DOS给每个驱动器(盘符)都保留了独立的当前工作目录。这个设计在当时是实用的:用户经常在不同磁盘间切换,记住每个盘的最后访问目录,下次切回去时不用重新导航。
你遇到的现象就是这个设计的体现:
- 当你在C盘输入
cd D:\Folder\时,CMD其实已经把D盘的当前目录设置成了D:\Folder\,但当前活动盘符还是C盘,所以必须再输D:切换过去; - 反过来先输
D:再cd D:\Folder\,就是先切换活动盘符,再设置它的当前目录。
为啥微软不修改这个机制?核心是兼容性——几十年下来,无数批处理脚本都依赖这个行为,如果突然改成直接跨盘符跳转,这些脚本会集体失效,这是微软不敢触碰的历史包袱。
不过CMD其实有个隐藏技巧能简化操作:用cd /d D:\Folder\,加/d参数就能一次性完成驱动器切换和目录跳转,不用分两次输入!
再看PowerShell的“直觉化”设计
PowerShell是微软为现代化系统管理打造的全新shell,它基于.NET框架,采用了统一路径模型——不管是本地磁盘、网络共享,甚至是注册表、证书存储,都被抽象成了“PowerShell驱动器”。
cd是PowerShell里Set-Location命令的别名,它直接操作这个统一的路径空间,会自动处理驱动器切换的逻辑。所以你输入cd D:\Folder\时,PowerShell会自动帮你完成“切换到D盘 + 进入目标目录”的两步操作,完全符合用户的直觉。
一句话总结
- CMD的行为是历史兼容性的产物,继承自DOS的磁盘-centric设计;
- PowerShell是现代化shell,用统一路径模型抛弃了旧时代的限制,操作更直观。
备注:内容来源于stack exchange,提问作者Brendan Lynn




