双击文件夹、右键删除,图形界面能覆盖日常操作的大部分场景,但总有这样的时刻:你要批量重命名两百个文件、想搞清楚哪个进程吃光了内存、或者同事丢来一句"在终端里跑一下"。这时候,命令行就是唯一的答案。这篇文章带你从零认识 Windows 的 CMD 和 PowerShell,学完你就能独立处理文件、排查网络、管理进程,甚至写出自己的小脚本。
1. 打开终端:CMD 与 PowerShell 的区别
Windows 自带两个"终端程序":CMD 是 DOS 时代传下来的老壳,命令短、风格朴素;PowerShell 是微软新一代的命令行环境,命令更长,但功能强得多——它的输出不是纯文本,而是带属性的"对象",这意味着你能像编程一样筛选、排序、组合结果。新手建议直接学 PowerShell,而 CMD 的经典命令(如 dir、cd)在 PowerShell 里也大多照常工作,不用担心学错。
打开方式有三种:按 Win + R 输入 cmd 回车,得到 CMD;在开始菜单搜索 "PowerShell" 回车,得到 PowerShell;最实用的是在文件资源管理器的地址栏直接输入 powershell 回车,会在当前文件夹打开——省掉了切换目录的功夫。打开后你会看到一行提示符,等着你输入命令,每输完一行按回车执行。
顺便提一句"管理员权限":很多系统级命令(改网络设置、装驱动、管理系统服务)需要以管理员身份运行终端,否则会报"拒绝访问"。方法是在开始菜单里右键 PowerShell,选择"以管理员身份运行"。想确认当前有没有管理员权限,执行 whoami /groups,看输出里有没有 Administrators 字样。权限不够时,命令的报错信息通常会直接告诉你,别慌,换个方式打开终端再试就好。
# 查看当前所在的目录(print working directory)
pwd
# 列出当前文件夹的内容,相当于双击打开
dir
# 清空屏幕,让输出重新开始
cls
pwd 显示你"站在"哪个目录,dir 列出这个目录下的文件和子文件夹,cls 清屏。这三个命令是之后所有操作的地基,先把它们敲熟。
2. 导航与文件操作:第一批命令
命令行里最重要的一件事就是"切换目录"。cd 后面跟绝对路径(cd D:\projects)或相对路径(cd .. 表示回到上一级),注意反斜杠是 Windows 的路径分隔符。搞不清自己在哪就敲 pwd;想看看这个目录下有什么就敲 dir——迷路了,这两条命令就是你的指南针。
# 进入 D 盘的 projects 文件夹
cd D:\projects
# 回到上一级目录
cd ..
# 新建一个名为 notes 的文件夹
mkdir notes
# 查看文本文件的内容(CMD 和 PowerShell 通用)
type notes.txt
# 复制文件并改名
copy notes.txt notes_backup.txt
# 移动文件(相当于剪切)
move notes_backup.txt notes\
mkdir 建文件夹,type 直接查看文本文件内容,copy 和 move 分别对应复制与剪切。注意 move 的目标路径末尾带反斜杠,表示"移动到 notes 这个文件夹里"。想删除文件?del 文件名 即可,但删除操作不可恢复,敲之前先想清楚。
路径还有相对和绝对之分:绝对路径从盘符写起(D:\projects\notes.txt),不管你在哪都能直达;相对路径从当前位置算起(..\notes),适合在熟悉的目录结构里快速移动。还有一个常用符号 . 表示当前目录,copy .\a.txt .\backup\ 就是"把当前目录的 a.txt 复制到 backup 子目录"。理解了这几个符号,cd、copy、move 的路径参数就再也不会写错。
再认识一个偷懒利器:通配符 *。dir *.jpg 只列出当前目录的 jpg 图片,copy *.txt D:\backup 一次复制所有 txt 文件。批量重命名也有专门的 ren 命令,配合通配符可以一次性把一堆 IMG_001.jpg 改成 photo-001.jpg。记住这个思路:图形界面里"一个一个来"的操作,命令行里几乎都能"一次全干完"。
3. 系统信息:ipconfig 与 tasklist
命令行第二个高频场景是"查看系统状态"。电脑连不上网、内存被占满、想确认系统版本——这些在图形界面里要翻好几层菜单的信息,一条命令就能看到。
# 查看本机 IP、网关、DNS,排查网络问题第一招
ipconfig
# 详细信息,包括 MAC 地址和 DHCP 状态
ipconfig /all
# 列出所有正在运行的进程(进程名、PID、内存占用)
tasklist
# 查看系统概览:CPU 型号、内存大小、Windows 版本
systeminfo
ipconfig 输出的 IPv4 地址 就是你这台电脑在局域网里的门牌号;tasklist 里的 PID(进程号)是每个进程的唯一编号,后面关进程要用。参数 /all、/? 是 CMD 风格的后缀,任何命令加 /? 都能调出帮助。
# 测试到某个网站的连通性,有回复说明网络基本正常
ping baidu.com
# 查看所有网络连接与监听端口,找谁占用了 8080 端口
netstat -ano
ping 会连续发送探测包并显示往返时间,延迟高或超时,问题多半出在网络;netstat -ano 的最后两列分别是 PID 和端口,配合 tasklist 就能反查出"是哪个程序占着 8080"——排查端口冲突的经典组合拳。
查到 PID 之后,下一步自然是"干掉它":taskkill /PID 1234 /F 强制结束指定进程,/F 表示强制;按名字杀用 taskkill /IM notepad.exe /F。动手前先确认目标是什么,system、explorer 这类系统进程杀了可能导致桌面异常,得重启资源管理器才能恢复。另外 tasklist | findstr chrome 可以像搜索一样过滤输出,算是 CMD 里的"穷人版管道"。
4. 进阶:PowerShell 的管道与筛选
CMD 的输出是纯文本,想"只挑出我要的部分"非常费劲;PowerShell 的输出是对象,可以用管道符 | 把左边命令的结果"喂"给右边的命令继续处理。看一个真实需求:找出内存占用最大的 5 个进程。
# 所有进程按内存(WS)降序排序,取前 5 个
Get-Process | Sort-Object WS -Descending | Select-Object -First 5
# 在日志文件里搜索包含 error 的行
Select-String -Path app.log -Pattern "error"
# 只列出名称以 chrome 开头的进程
Get-Process | Where-Object { $_.Name -like "chrome*" }
读法很简单:从左往右念。Get-Process 拿到全部进程,Sort-Object WS -Descending 按内存降序排,Select-Object -First 5 只留前五个。第三条里的 $_ 代表"管道里当前这条记录",-like 配合 * 做模糊匹配。熟悉这种"动词-名词"的命名规律后,PowerShell 命令基本不用背。
PowerShell 还有两个贴心的安全设计:-WhatIf 参数可以"演练"命令而不真正执行,比如 Remove-Item *.tmp -WhatIf 会先列出"将要删除哪些文件";Get-Help 命令名 -Examples 直接给你看官方示例。拿不准一个命令会不会搞坏东西时,先加 -WhatIf 跑一遍,是 PowerShell 老手的基本习惯。
5. 把命令存成脚本
每次都要敲一遍的命令,不如存成文件运行。CMD 脚本后缀是 .bat,PowerShell 脚本后缀是 .ps1。用记事本写好,保存时把编码选成 ANSI,中文注释才不会乱码。
@echo off
REM 一键备份:把 D:\work 复制到 E:\backup
echo 开始备份...
xcopy D:\work E:\backup /E /I /Y
echo 备份完成!
pause
@echo off 让脚本不回显命令本身,REM 是注释,xcopy 是增强版复制:/E 连子目录一起复制,/I 目标不存在就当文件夹创建,/Y 覆盖不询问。pause 让窗口执行完不闪退,方便你看到结果。
# 一键清理当前用户的临时文件(需以管理员身份运行)
$temp = "$env:TEMP\*"
Remove-Item $temp -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "临时文件已清理"
$env:TEMP 是系统变量,指向临时文件夹;Remove-Item -Recurse -Force 递归强制删除,-ErrorAction SilentlyContinue 遇到删不掉的文件也不报错中断。第一次运行 .ps1 可能被"执行策略"拦截,在管理员 PowerShell 里执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 即可放开本地脚本。
最后认识一下环境变量 %PATH%:系统执行命令时,会按这个变量里列出的目录逐个寻找程序。你在终端里敲 python 能启动,就是因为 Python 安装时把自己的目录加进了 PATH。查看它用 echo %PATH%(CMD)或 $env:PATH(PowerShell),临时追加目录用 set PATH=%PATH%;D:\tools。理解了 PATH,以后"装好了软件但命令找不到"的报错你一眼就能看懂。
6. 总结与练习
这一篇你学会了:用 pwd、dir、cd 在目录间游走,用 type、copy、move、mkdir 操作文件,用 ipconfig、ping、tasklist、netstat 诊断系统和网络,还用 PowerShell 的管道把命令组合起来,最后把重复劳动固化成脚本。练手三题:
- 用
ipconfig找到自己的 IPv4 地址,再ping一下路由器地址(通常是 192.168.x.1),观察延迟是否稳定。 - 用
tasklist找出内存占用最高的进程,再用 PowerShell 管道写出等价的筛选命令,对比两种写法的差别。 - 写一个
.bat脚本:把桌面所有.jpg文件复制到新建的backup文件夹,并输出复制了多少个文件。
💡 记不住命令很正常,命令 /?(CMD)和Get-Help 命令名(PowerShell)就是内置说明书,多查两次就熟了。