cd 是什么
cd 用来显示或切换命令提示符的当前工作目录,与另一条同义命令等价。它看似简单,却是批处理脚本里最容易出问题的一环:Windows 的路径模型按驱动器分别记录当前目录,不带切换驱动器的参数时,从 C 盘执行到 D 盘某个路径,只是改了 D 盘记忆中的位置,当前所在盘并不会变。理解这一点,脚本里所有关于相对路径的困惑基本都能解释清楚。
基本信息
| 适用平台 | Windows CMD(PowerShell 中的 cd 是别名,行为不同) |
|---|---|
| 语法 | cd [/d] [路径];cd .. 返回上级;cd 反斜杠 返回根目录;cd 不带参数显示当前目录 |
| 关键开关 | /d 同时切换驱动器,跨盘切换必须使用,否则只记录目标盘的位置 |
| 绝对路径 | 从盘符开始书写,如带盘符的完整路径 |
| 相对路径 | 相对于当前工作目录解析,脚本中较易受上下文影响 |
| 脚本技巧 | 批处理中用表示脚本所在目录的参数写法把工作目录定到脚本位置 |
典型使用场景
- 在命令行中进入目标目录后执行相对路径下的程序或脚本
- 批处理开头把工作目录切到脚本所在位置,避免双击运行时的目录不确定性
- 跨盘切换前先加切换驱动器的参数,避免停留在原盘
- 用返回上级与返回根目录两种写法快速在目录树中移动
- 在脚本中确认当前目录,作为日志输出的一部分便于定位问题
- 路径含空格时用引号包裹,避免被拆成多段参数
常用示例
常用示例
:: 显示当前目录
cd
:: 跨盘切换(最常用)
cd /d D:\Work\Logs
:: 返回上一级
cd ..
:: 返回当前盘根目录
cd \
:: 同级目录跳转
cd ..\Tools
:: 路径含空格要加引号
cd /d "D:\Program Files\App"
:: 批处理中切到脚本所在目录
cd /d %~dp0行为对照
| 写法 | 效果 | 说明 |
|---|---|---|
| cd 或 cd . | 显示当前目录 | 不带参数只查看,不改变位置 |
| cd 路径(跨盘) | 只改变该盘的记忆位置 | 当前盘不变,是脚本最常见误解 |
| cd /d 路径 | 切换驱动器并进入目录 | 跨盘操作唯一正确写法 |
| cd .. | 返回上一级 | 已在盘根时无变化 |
| cd \ | 返回当前盘根目录 | 与返回上级是两回事 |
| cd /d 脚本目录参数 | 切到脚本所在目录 | 双击运行时目录不确定,靠它兜底 |
在 PowerShell 会话里 cd 是另一个命令的别名,用法与 CMD 不完全一致,跨盘直接写路径即可,不需要切换驱动器的参数;把 CMD 脚本原样搬到 PowerShell 里执行需要留意这个差异。
批处理里判断命令是否成功,要看切换之后目录是否真的变了。可以紧接着输出当前目录,或用一个不存在的路径测试失败时的表现,避免脚本在错误目录里继续执行。