切换当前目录,并区分当前盘与其它盘各自的当前目录。
cd(同 chdir)显示或切换 CMD 的当前工作目录。只输入 cd 会打印当前路径;cd .. 回到上级;cd \ 回到当前盘根目录;cd /d D:\path 在切目录的同时切换盘符。每个盘符在 CMD 中各有独立的当前目录,cd D:\data 只修改 D 盘的当前目录,命令提示符仍停留在原盘。
边界:cd 改的是当前 CMD 进程的工作目录,不会影响父进程,也不会持久化到新开的窗口。CMD 不能把 UNC 路径 \\server\share 当作当前目录,直接 cd 会报错;需要先用 pushd 映射临时盘符,退出时 popd。相对路径按当前目录解析,cd \Windows 是当前盘的根,不是“任意盘的 Windows”。
Windows 10/11 与 Server 版本行为一致;命令扩展默认开启时,路径中的空格不必加引号(官方说明),但脚本里仍建议加引号以免歧义。PowerShell 中 cd 是 Set-Location 的别名,可直接进入 UNC 和注册表路径,也没有 /d 开关;跨盘切换不需要额外参数。
# 1. 确认当前目录,脚本里也可用 echo %CD%
C:\> cd
# 2. 切到另一块盘上的项目目录,必须带 /d
C:\> cd /d D:\Projects\app
# 3. 返回上一级,或直接回到当前盘根目录
C:\> cd ..
C:\> cd \
# 4. 带空格的路径用引号包住
C:\> cd "C:\Program Files (x86)\Common Files"
# 5. 进入 UNC 共享:pushd 会临时映射一个盘符,popd 断开
C:\> pushd \\fileserver\share\build
C:\> popd
# 6. 只输入盘符不会切换盘,只显示该盘当前的目录
C:\> cd D:
cd D:\data 没加 /d 时仍停留在 C 盘,只是设置了 D 盘的当前目录;用 cd 或 echo %CD% 验证,跨盘必须 cd /d。cd \\server\share 在 CMD 中会报“CMD does not support UNC paths as current directories”;改用 pushd/popd,或先 net use 映射盘符。.bat 中执行 cd 只改该批处理进程的目录,调用者窗口不变;需要影响调用方时由调用方自己 cd,或在脚本内用 pushd/popd 限定作用域。cd /d D:\data 会报参数错误;直接用 cd D:\data,并注意 PowerShell 的位置可以是注册表等非文件系统路径。cd .. 已经在根目录时不会继续向上;要跳回根目录用 cd \。&、括号时加引号;在批处理里变量为空可能让 cd %DIR% 变成 cd,先用 echo 核对拼接结果。合上页面,先回答,再展开对照。
cd D:\data 后,当前盘符和当前目录分别是什么?\\server\share\build?为什么不直接 cd?cd 到别的目录,会让调用它的窗口也切过去吗?D:\data;要真正切过去需 cd /d。pushd \\server\share\build,它会临时映射盘符;CMD 不支持 UNC 作为当前目录。cd 只影响自己,除非由调用方切换。
小程序版
微信扫码,随时查命令