cmd&PowerShell:切换工作目录

博客很少使用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:\Tools,cmd的内心独白其实是:"收到!我现在把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的这个"默默记录"的怪癖,其实是一块至今仍在完美运转的计算机远古活化石。

相关推荐
Gl�ria3 小时前
Hadoop MapReduce / Hive 场景:ReduceTask 热点 Key 排查
运维·hadoop·数据倾斜
inkuu3 小时前
WSL启动慢问题分析与修复
linux
Dovis(誓平步青云)3 小时前
QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
服务器·人工智能·机器人·操作系统·电脑·智能化
snow@li4 小时前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
志栋智能4 小时前
超自动化运维与DevOps的深度融合
运维·网络·人工智能·安全·自动化
JJJennie7775 小时前
MAI Gateway技术揭秘:大模型网关能做什么?从原理到落地
linux·服务器·网络·ai网关
风哥2号8 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
wuminyu11 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
新时代牛马11 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
猿与禅12 小时前
Linux(Ubuntu)入门到实战:系统管理、常用命令与权限体系完整指南
linux·ubuntu·apt·进程管理·系统运维·用户权限·vi/vim