📋一、整体学习路线
推荐按"窗口与命令 → 目录 → 文件 → 批处理 → 进阶"逐步学习。CMD 看似老旧,但仍是排查问题、写小工具、自动化运维的利器。
8核心学习模块
1综合实训项目
30+必须掌握的常用命令
从零开始面向 Windows 初学者
认识 CMD→目录路径→
文件操作→批处理基础→
变量与环境→系统命令→
批处理进阶→网络命令
| 模块 | 学习内容 | 建议时间 | 最终能力 |
|---|---|---|---|
| 第1部分 | 认识命令提示符 | 1课时 | 能正确打开和切换 CMD |
| 第2部分 | 目录与路径 | 1课时 | 熟练切换、创建、删除目录 |
| 第3部分 | 文件操作 | 2课时 | 复制、移动、删除、重命名、查看文件 |
| 第4部分 | 批处理 (.bat) 基础 | 2课时 | 编写并运行简单批处理 |
| 第5部分 | 变量与环境 | 1课时 | 使用 set、环境变量与 PATH |
| 第6部分 | 常用系统命令 | 2课时 | 查看进程、系统信息、磁盘 |
| 第7部分 | 批处理进阶 | 2课时 | if、for、goto、参数传递 |
| 第8部分 | 网络与高级用法 | 2课时 | 诊断网络、管理用户与服务 |
📖 关键术语速览
CMDWindows 自带的命令行解释器(cmd.exe),执行字符串命令并返回结果。
PowerShell微软新一代命令行工具,功能更强(支持对象、管道);CMD 更适合初学者和脚本兼容性场景。
绝对路径 / 相对路径绝对路径从盘符开始,如
C:\Windows\System32;相对路径从当前目录开始,如 ..\Docs。通配符
* 匹配任意多个字符;? 匹配单个字符。如 *.txt 匹配所有 .txt 文件。管道与重定向
| 把左边输出作为右边输入;> 覆盖写文件、>> 追加写文件、< 从文件读。批处理 (.bat)把多条命令放入
.bat 文件中双击或调用即可顺序执行。💻① 认识命令提示符 (CMD)
学习目标:理解 CMD 是什么,能用多种方式打开并切换窗口。
📌 打开 CMD 的 5 种方式
在开始菜单搜索 cmd,按回车。
按 Win+R,输入
cmd,回车。在文件资源管理器地址栏输入
cmd,回车 —— 当前位置即当前目录。右键开始菜单 → 终端(管理员) 或 Windows Terminal (管理员)。
在任务管理器 → 文件 → 运行新任务,输入
cmd。📌 窗口结构
标题栏:显示当前窗口标题(如"命令提示符"或自定义标题)。
菜单栏:右键标题栏可调出"属性"——字体、颜色、缓冲区大小都在这里调。
命令提示符:类似
缓冲区:超出窗口的文字会保留,可向上滚查看历史。
菜单栏:右键标题栏可调出"属性"——字体、颜色、缓冲区大小都在这里调。
命令提示符:类似
C:\Users\你的名字>,闪烁光标后输入命令。缓冲区:超出窗口的文字会保留,可向上滚查看历史。
⌨️ 必备快捷键
↑/↓ 历史命令
←/→ 光标移动
Ctrl+C 中断当前命令
Ctrl+V 粘贴(标题栏右键 → 属性可启用)
Ctrl+A 全选(新版支持)
F1–F9 历史命令片段
Tab 自动补全文件名
Esc 清空当前行
🔑 必须掌握
5 种方式打开 CMD
区分普通与管理员模式
修改窗口属性(字体/颜色/大小)
历史命令调用
Tab 自动补全
右键粘贴(属性开启后)
区别:普通 CMD 不能修改系统级设置;遇到"拒绝访问"时,用管理员身份重新打开。
小贴士:在窗口标题右键 → 属性,勾选"快速编辑模式"和"插入模式",可像记事本一样选中、复制、粘贴文字。
📂② 目录与路径
📌 核心命令速查
| 命令 | 作用 | 示例 |
|---|---|---|
盘符: | 切换盘符 | D: 切到 D 盘 |
cd | 切换目录 | cd Windows\System32 |
cd .. | 返回上级目录 | — |
cd \ | 回到当前盘符根目录 | — |
dir | 列出当前目录内容 | dir /w 宽格式 |
md / mkdir | 创建目录 | md Projects\demo |
rd / rmdir | 删除空目录 | rd temp |
rd /s /q | 递归删除非空目录 | rd /s /q oldfolder |
tree | 显示目录树 | tree /f 含文件 |
pushd / popd | 切换并记忆目录 | 嵌套调用时方便 |
📌 实操示例
C:\Users\Demo>cd \
C:\>md Projects\batch-demo
C:\>cd Projects\batch-demo
C:\Projects\batch-demo>dir /w
Volume in drive C has no label.
Volume Serial Number is XXXX-XXXX
Directory of C:\Projects\batch-demo
[.] [..]
0 File(s) 0 bytes
2 Dir(s) 50,000,000,000 bytes free
📌 路径语法要点
反斜杠:Windows 路径用
不区分大小写:
空格需加引号:
当前目录用
\(不是 /)。不区分大小写:
cd windows 和 cd Windows 等价。空格需加引号:
cd "Program Files"。当前目录用
. 表示,父目录用 ..。
常见错误:
rd /s /q folder 删除不可恢复 —— 不会进回收站!使用前务必确认路径。📄③ 文件操作
📌 文件命令速查
| 命令 | 作用 | 示例 |
|---|---|---|
copy | 复制文件 | copy a.txt b.txt |
move | 移动/重命名 | move a.txt D:\backup\ |
del / erase | 删除文件 | del *.tmp |
ren / rename | 重命名 | ren old.txt new.txt |
type | 显示文本内容 | type readme.txt |
more | 分页显示 | type big.txt | more |
attrib | 查看/修改属性 | attrib +r file.txt 设为只读 |
xcopy | 增强复制(目录) | xcopy /E src dst |
robocopy | 高级同步工具 | robocopy src dst /MIR |
📌 通配符用法
C:\data>dir *.txt REM 列出所有 .txt 文件
C:\data>dir file?.log REM 匹配 file1.log、fileA.log 等单个字符
C:\data>del *.tmp REM 批量删除临时文件
C:\data>copy *.txt D:\backup\ REM 复制所有 txt 文件
📌 重定向与管道
输出到文件:
从文件输入:
管道串联命令:
dir > list.txt(覆盖)/ dir >> list.txt(追加)从文件输入:
sort < unsorted.txt管道串联命令:
dir /b | findstr ".txt" 把 dir 的输出交给 findstr 过滤
练习:新建
C:\lab 目录,复制几个文件到里面,用 del *.tmp 删除临时文件,最后用 dir > file.log 把列表输出到文件。📜④ 批处理 (.bat) 基础
把多条命令写进 .bat 文件里,双击即可批量执行——这是"自动化"的入门。
📌 创建第一个批处理
右键桌面 → 新建 → 文本文档,命名为
hello.bat。右键 → 编辑,用记事本打开。
输入下面的内容并保存。
双击运行,观察效果。
@echo off
REM 这是我的第一个批处理
title Hello Demo
color 0a
echo ============================================
echo 欢迎来到 CMD 批处理世界!
echo 当前时间:%date% %time%
echo ============================================
pause
📌 常用批处理命令
| 命令 | 作用 |
|---|---|
@echo off | 关闭命令回显(开头一般加 @ 隐藏这一行本身) |
echo 文本 | 输出文本 |
echo. | 输出一个空行 |
pause | 暂停并显示"按任意键继续…" |
pause >NUL | 暂停但不显示提示 |
rem 注释 | 注释(不执行) |
title 标题 | 修改窗口标题 |
color 0a | 黑底亮绿字(前景 0=黑,背景 a=亮绿) |
cls | 清屏 |
start 程序 | 启动程序或打开文件 |
exit | 退出批处理 |
📌 颜色对照(前景/背景)
| 0=黑 | 1=蓝 | 2=绿 | 3=湖蓝 | 4=红 | 5=紫 |
| 6=黄 | 7=白 | 8=灰 | 9=亮蓝 | a=亮绿 | b=亮青 |
| c=亮红 | d=亮紫 | e=亮黄 | f=亮白 | color 1f 表示蓝底亮白字 | |
小贴士:批处理文件默认编码是 ANSI。如果你的脚本里有中文,另存为 UTF-8 with BOM 或 GB18030 才不会乱码;记事本直接保存通常是 GB18030,可以正常显示。
🔧⑤ 变量与环境
📌 自定义变量
C:\>set name=Alice
C:\>echo Hello %name%!
Hello Alice!
C:\>set name= REM 删除变量
注意:
set 命令的等号两边不要加空格!set name = Alice 会创建名为 "name " 的变量,而不是 "name"。📌 常见环境变量
| 变量 | 含义 | 示例 |
|---|---|---|
%USERPROFILE% | 当前用户目录 | C:\Users\Alice |
%SYSTEMROOT% | 系统根目录 | C:\WINDOWS |
%PATH% | 可执行文件搜索路径 | 多个路径用 ; 分隔 |
%TEMP% / %TMP% | 临时目录 | C:\Users\Al...\AppData\Local\Temp |
%COMPUTERNAME% | 计算机名 | DESKTOP-ABC123 |
%OS% | 操作系统 | Windows_NT |
%PROCESSOR_ARCHITECTURE% | CPU 架构 | AMD64 |
%DATE% / %TIME% | 当前日期/时间 | 格式取决于区域设置 |
%RANDOM% | 0–32767 随机数 | 适合做临时文件名 |
📌 查看与修改 PATH
C:\>echo %PATH% REM 显示当前 PATH
C:\>set PATH=%PATH%;D:\mybin REM 临时追加(仅当前窗口)
C:\>setx PATH "%PATH%;D:\mybin" /M REM 永久修改(需管理员)
📌 转义特殊字符
&、<、>、| 等字符在批处理中有特殊含义,需要用 ^ 转义:echo a ^> b 输出 a > b。
练习:用
set 设置变量 MYDIR=C:\Projects,再用 %MYDIR% 拼接路径,结合 cd 切换过去。🖥️⑥ 常用系统命令
📌 系统信息
| 命令 | 作用 |
|---|---|
systeminfo | 显示系统详细信息(OS 版本、内存、补丁等) |
hostname | 显示计算机名 |
whoami | 显示当前用户名 |
echo %USERNAME% | 另一种显示用户名的方式 |
ver | 显示 Windows 版本 |
msinfo32 | 打开"系统信息"图形界面 |
📌 进程管理
C:\>tasklist REM 列出所有进程
C:\>tasklist | findstr "notepad" REM 过滤出 notepad
C:\>taskkill /IM notepad.exe /F REM 强制结束 notepad
C:\>taskkill /PID 1234 /F REM 按 PID 结束
📌 磁盘与文件检查
| 命令 | 作用 |
|---|---|
chkdsk C: | 检查 C 盘错误 |
chkdsk C: /F | 检查并修复错误(需重启) |
sfc /scannow | 扫描并修复系统文件(需管理员) |
diskpart | 进入磁盘分区工具(危险,谨慎!) |
defrag C: /O | 优化 C 盘 |
cleanmgr | 打开磁盘清理 |
📌 服务管理
C:\>sc query REM 列出所有服务
C:\>sc query Spooler REM 查看打印服务状态
C:\>sc start Spooler REM 启动服务
C:\>sc stop Spooler REM 停止服务
📌 关机、重启、注销
C:\>shutdown /s /t 0 REM 立即关机
C:\>shutdown /r /t 0 REM 立即重启
C:\>shutdown /a REM 取消已计划的关机
C:\>shutdown /l REM 注销当前用户
危险命令:
rd /s /q C:\、del /f /s /q C:\*、diskpart clean —— 这些会把系统破坏干净,永远不要在你不熟悉的路径下执行。🔁⑦ 批处理进阶:if / for / goto
📌 if 条件判断
@echo off
REM 判断文件是否存在
if exist "C:\data\report.txt" (
echo 文件存在
) else (
echo 文件不存在
)
REM 比较字符串
set answer=yes
if "%answer%"=="yes" (
echo 你同意了
)
REM 根据错误级别判断
ping -n 1 127.0.0.1 >NUL
if errorlevel 1 (
echo 网络不通
)
📌 for 循环
REM 遍历文件
for %i in (*.txt) do echo %i
REM 遍历数字
for /l %n in (1,1,5) do echo 第 %n 次
REM 读取文件每一行
for /f "tokens=*" %l in (list.txt) do echo 处理: %l
REM 递归遍历子目录
for /r C:\data %f in (*.log) do echo %f
注意:在批处理文件中,
%i 要写成 %%i(两个百分号)。📌 goto 与 call
@echo off
:start
echo 1. 查看时间
echo 2. 退出
set /p choice=请选择:
if "%choice%"=="1" goto showtime
if "%choice%"=="2" exit
goto start
:showtime
echo 现在是 %time%
pause
goto start
📌 参数传递 %1 ~ %9
在批处理文件中,
例:
%1 表示第一个参数,%2 第二个,以此类推。例:
backup.bat C:\data D:\backup → %1 是 C:\data,%2 是 D:\backup。
小贴士:现代 Windows 推荐用 PowerShell 处理复杂逻辑;批处理适合做启动脚本和小工具。
🌐⑧ 网络与高级用法
📌 网络诊断四件套
C:\>ipconfig REM 查看本机 IP、子网掩码、网关
C:\>ipconfig /all REM 查看 DNS、MAC 等详细信息
C:\>ipconfig /flushdns REM 清空 DNS 缓存
C:\>ping www.baidu.com REM 测试到百度的连通性
C:\>ping 8.8.8.8 -t REM 持续 ping,按 Ctrl+C 停止
C:\>tracert www.baidu.com REM 跟踪到目标的每一跳
C:\>nslookup www.baidu.com REM 查询 DNS 解析
📌 连接与端口
C:\>netstat -an REM 显示所有连接和监听端口
C:\>netstat -ano | findstr ":80" REM 查找 80 端口的进程
C:\>arp -a REM 查看 ARP 缓存表
C:\>route print REM 查看路由表
📌 用户与共享管理(net 命令)
C:\>net user REM 列出所有用户
C:\>net user Alice REM 查看 Alice 用户信息
C:\>net user Bob 123 /add REM 添加用户 Bob(密码 123)
C:\>net localgroup REM 列出所有本地组
C:\>net share REM 列出本机共享
C:\>net use Z: \\server\share REM 映射网络驱动器
📌 文件下载(PowerShell 辅助)
C:\>powershell -Command "Invoke-WebRequest https://x.com/file.zip -OutFile file.zip"
小贴士:Windows 10/11 自带 curl 和 tar 命令,可以直接在 CMD 里下载文件和解压 tar 包。
📌 远程连接
远程桌面:
SSH(Win10+):
旧版 Telnet:需要先在"启用或关闭 Windows 功能"中开启 Telnet 客户端
mstsc 打开远程桌面连接SSH(Win10+):
ssh user@host旧版 Telnet:需要先在"启用或关闭 Windows 功能"中开启 Telnet 客户端
🎯综合实训:编写"日常运维小工具箱"
完成 8 个模块后,写一个真正的批处理小工具,检验学习成果。
📌 项目:磁盘空间清理脚本
编写 cleanup.bat,实现以下功能:
- 显示当前时间和剩余磁盘空间
- 询问用户是否清理临时文件(
%TEMP%) - 如同意,删除
%TEMP%\*,输出清理了多少字节 - 询问是否清空 DNS 缓存
- 询问是否执行磁盘检查(只读模式,不实际修复)
- 最后输出"清理完成"并暂停
📌 示例实现(参考)
@echo off
chcp 65001 >NUL
title 系统维护小工具 v1.0
color 0b
:menu
cls
echo ============================================
echo 系统维护小工具 v1.0
echo 当前时间:%date% %time%
echo ============================================
echo.
echo [1] 查看磁盘空间
echo [2] 清理临时文件
echo [3] 清理 DNS 缓存
echo [4] 查看网络信息
echo [5] 退出
echo.
set /p opt=请选择(1-5):
if "%opt%"=="1" goto disk
if "%opt%"=="2" goto temp
if "%opt%"=="3" goto dns
if "%opt%"=="4" goto net
if "%opt%"=="5" exit
goto menu
:disk
echo.
echo 磁盘空间信息:
wmic logicaldisk where "DriveType=3" get Caption,FreeSpace,Size /format:list
pause
goto menu
:temp
echo.
set /p yn=确认清理临时文件吗?(Y/N)
if /i not "%yn%"=="Y" goto menu
echo 正在清理...
del /f /s /q "%TEMP%\*.*" 2>NUL
echo 清理完成!
pause
goto menu
:dns
ipconfig /flushdns
pause
goto menu
:net
ipconfig /all | more
pause
goto menu
📌 拓展任务(可选)
把上面脚本保存为
cleanup.bat 并实际运行添加"自动备份桌面到 D:\backup"功能
用
for /f 遍历并打印所有环境变量用
tasklist 找出占用内存最多的 5 个进程写一个开机自动清理脚本(放入"启动"文件夹)
把脚本改成 PowerShell 版本(
.ps1)📈 CMD 核心知识体系
| 层次 | 核心内容 | 学习重点 |
|---|---|---|
| 第一层:窗口与命令 | 打开 CMD、命令格式、内置命令 | 熟练使用 dir / cd / cls / exit |
| 第二层:目录与文件 | 路径操作、通配符、复制移动删除 | 理解相对/绝对路径 |
| 第三层:批处理基础 | .bat 文件、echo/pause/rem/cls/title/color | 能写简单自动化脚本 |
| 第四层:变量与环境 | set、%var%、环境变量、PATH | 让脚本"可配置" |
| 第五层:系统与网络 | ipconfig/ping/tasklist/systeminfo | 独立排查日常问题 |
| 第六层:批处理进阶 | if/for/goto/call、参数传递 | 写真正的工具箱 |
| 第七层:高级 | netsh/net/robocopy/PowerShell 衔接 | 迈向脚本开发 |