1. 二十年了,为什么我还要劝你认真学一遍CMD
先说一个真实场景。前阵子帮朋友处理一台老笔记本,开机慢、C盘飘红、右键菜单卡顿,他准备重装系统。我打开CMD,敲了三行命令:关闭休眠、清理临时文件、禁用几个开机启动项。十分钟后C盘多出十几个G,开机速度肉眼可见地变快。朋友在旁边看着,一脸"这也行?"的表情。
这就是CMD和DOS命令最奇妙的地方:它已经存在了几十年,看起来就是一个黑底白字的窗口,但在很多场景下,效率远超鼠标在图形界面里的反复点击。
很多人觉得CMD是"古董技术",是程序员和运维才需要碰的东西。但实际上,从普通办公用户到开发者,只要你用的是Windows系统,日常生活中遇到的大部分系统问题——磁盘满了、程序卡死、端口被占用、网络不通、电脑型号查不到——几乎都能用几条命令快速定位和解决。学CMD不是让你背命令大全,而是让你掌握一套绕过图形界面、直接和Windows系统对话的通用能力。
这篇文章我不会罗列什么"100条命令大全"让你去背。我会从实际使用场景出发,把最常用、最能解决问题的CMD命令和DOS命令拆开讲清楚,包括每条命令的原理、参数、常见坑,还会穿插一些我在日常维护和开发中积累的实操经验。适合人群:刚接触命令行的新手、想系统梳理一遍的开发者、以及所有被Windows各种小问题折磨过的普通用户。
1.1 先搞清楚:CMD、DOS命令、批处理到底是什么关系
这三者经常被混着说,但它们其实是三个层面的东西。
DOS是上世纪八九十年代的操作系统,全称Disk Operating System,它没有图形界面,所有操作都靠键盘敲命令完成。你现在看到的很多命令——cd、dir、copy、del——就是从那个时代流传下来的遗产。
CMD是Windows系统里的命令行解释器程序,全称是Command Prompt,也就是你按下Win+R输入cmd后弹出的那个黑色窗口。它是一个程序,负责接收你输入的命令、解析、然后交给系统去执行。CMD继承了DOS时代的命令语法,同时兼容Windows新增的一些工具命令,比如ping、ipconfig、tasklist。
批处理则是把多条命令写进一个以.bat或.cmd结尾的文本文件里,双击就能按顺序执行。它相当于把零散的命令"打包"成自动化脚本。
你可能还听过PowerShell。PowerShell是微软后来推出的更强大的命令行环境,支持对象、管道、脚本语言等。但CMD并没有被淘汰,它依然在大量系统工具、开发工具、安装脚本里被默认调用。很多老运维习惯用CMD,因为它在不同Windows版本之间表现稳定、语法简单、调试直观。后面我会单独用一章讲CMD和PowerShell到底怎么选。
1.2 以管理员身份运行,这个习惯直接决定成败
学CMD第一条要记住的,不是命令,而是权限。
Windows的命令行窗口分两种运行模式:普通模式和管理员模式。普通模式下,你只能在用户权限范围内操作,很多命令会提示"拒绝访问";管理员模式下,你才有权限修改系统设置、操作系统文件、管理服务。
打开管理员CMD的方式是:按Win键,输入cmd,右键点击"命令提示符",选择"以管理员身份运行"。或者按Win+X,在弹出的菜单里直接选"终端(管理员)"。
我见过很多新手踩坑:执行powercfg -h off提示无效,执行dism命令报错,执行net start提示拒绝访问,原因都是没有以管理员身份运行。后面讲到的关闭休眠、清理系统文件、修复系统镜像,全部需要在管理员CMD里操作。所以这个习惯最好一开始就养成——凡是涉及系统级改动的命令,一律在管理员窗口执行,不要嫌麻烦。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高频DOS命令速查:按场景分类,比背"命令大全"实用得多
市面上流传的各种"DOS命令大全"列表,动辄一百多条,但里面大半你可能一辈子都用不上。我根据自己的实际使用频率,把命令按场景分成四大类,每类挑最核心的几讲透,讲完你就知道它们分别在什么场景下能被用上了。
2.1 目录与文件操作:cd、dir、md、rd、copy、move、del
这一类是所有命令的基础,也是你打开CMD后必然要面对的。
cd是切换目录。比如你要进入D盘的某个项目文件夹,先输入d:切换到D盘,再cd D:\work\project进入指定路径。注意,在CMD里切换盘符不能直接用cd D:,必须先输入盘符加冒号,这是很多新手容易卡住的地方。另外,cd ..返回上一层目录,cd \直接回到当前盘的根目录。
dir是查看目录内容。裸敲dir显示当前目录下的文件和文件夹,加上/a可以显示隐藏文件,加上/s可以递归显示子目录内容。运维排查时我常用dir /s /b获取完整路径列表,方便批量处理。
md和rd是创建和删除目录。md test创建test文件夹,rd test删除空文件夹。如果文件夹里有内容,需要加/s参数强制删除,比如rd /s /q test,其中/q是安静模式,不询问确认。这里要提醒一下:rd /s删除不可恢复,不会进回收站,操作前务必确认路径没有写错。
copy和move分别是复制和移动。copy a.txt D:\backup把a.txt复制到D盘backup目录,如果目标目录下有同名文件,默认会询问是否覆盖,加/y参数可以跳过询问直接覆盖。move的用法类似,但它会把源文件剪切走。批量操作用copy配合通配符很强,比如copy *.jpg D:\photos一次复制所有jpg图片。
del是删除文件。del a.txt删除单个文件,del *.log删除当前目录下所有log文件,加/s可以递归删除子目录里的文件。同样,del不会进回收站,删除前最好先dir看一眼当前目录,确认自己在正确的位置。
不要小看这些基础命令,很多批处理脚本的骨架就是它们。实际工作中我经常用一条del /s /q *.tmp清理开发项目里散落的临时文件,比在资源管理器里一个个翻效率
