平时用 Windows 基本都是鼠标点,可真到要写脚本、要批量处理一堆文件的时候,还是命令行顺手。这份把 Windows 常用的命令整理了一下,同样按「想干什么」来排,不按命令名硬背。

它和 Linux 命令行版 是一套思路的分身——很多命令其实是同一个道理,这边会了那边几乎不用重学。

先提醒一句:Windows 现在有两套命令行。CMD 是旧的、默认开出来那个黑窗口;PowerShell 是新的、更强,用 powershell 或 pwsh 打开。这篇以 CMD 为主,PowerShell 不一样的地方我会单独标出来。

目录

  1. 基础概念
  2. 获取帮助
  3. 文件与目录
  4. 查看文件内容
  5. 搜索与查找
  6. 通配符
  7. 属性与权限
  8. 用户与提权
  9. 环境变量
  10. 进程管理
  11. 磁盘
  12. 网络
  13. 压缩与打包
  14. 管道与重定向
  15. 文本处理
  16. 包管理(winget)
  17. 系统信息
  18. 编辑器
  19. 批处理与 PowerShell 脚本入门
  20. 定时任务
  21. 服务管理
  22. 其他实用命令
  23. 快捷键与技巧
  24. 推荐学习路线

1. 基础概念

  • CMD:Windows 自带的命令行解释器(Command ),就是你按 Win+R → 输 cmd → 回车出来的黑窗口。
  • 提示符:C:\Users\你> —— 前面是当前所在路径,> 就相当于 Linux 的 $。
  • 命令结构:命令 [选项] [参数],例如 dir /w C:\(/w 是选项,C:\ 是参数)。Windows 选项用 / 开头(不像 Linux 用 -)。
1
2
3
4
5
:: 记住:Windows 的注释用 :: 或 rem
dir :: 列出当前目录内容
cd :: 显示当前路径
echo hi :: 输出字符串
cls :: 清屏(对应 Linux 的 clear / Ctrl+L)

2. 获取帮助

1
2
3
4
dir /?        :: 查看命令用法(几乎每个命令都支持 /?)
help dir :: 另一种看帮助的方式
where ipconfig :: 看命令的实际路径(对应 Linux 的 which)
ver :: 查看 Windows 版本

PowerShell 里帮助更强:

1
2
Get-Help Get-Process   # 查看 cmdlet 帮助
Get-Command * # 列出所有命令

3. 文件与目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
## 列出
dir :: 当前目录
dir /a :: 含隐藏文件(对应 Linux ls -a)
dir /s :: 含子目录递归列出(对应 ls -R)
dir /w :: 宽格显示,只看文件名
dir /o:d :: 按修改时间排序

## 切换
cd C:\Users :: 切目录
cd .. :: 上一级(对应 Linux cd ..)
cd \ :: 回盘符根目录
cd :: 显示当前路径
d: :: 切到 D 盘(直接输盘符+冒号)

## 新建与复制
mkdir mydir :: 新建目录(也可用 md)
mkdir a\b\c :: 递归创建多级目录
copy a.txt b.txt :: 复制文件
copy a.txt backup\ :: 复制到指定目录
xcopy dir1 dir2 /e :: 递归复制目录(对应 Linux cp -r)

## 移动与重命名
move a.txt b.txt :: 移动
ren a.txt b.txt :: 重命名(对应 Linux mv 的改名用法)

## 删除
del file.txt :: 删除文件
del *.tmp :: 删除一类文件
rmdir dir :: 删空目录(也可用 rd)
rmdir /s dir :: 递归删除目录
rmdir /s /q dir :: 静默递归删除(危险!对应 Linux rm -rf)

⚠️ CMD 的 del / rmdir 默认不进回收站,删了不可恢复,rmdir /s /q 更要小心。


4. 查看文件内容

1
2
3
type file.txt        :: 一次性打印整个文件(对应 Linux cat)
more < file.txt :: 分页查看(空格翻页,q 退出,对应 Linux less)
dir | more :: 把命令输出分页

PowerShell 里更顺手:

1
2
Get-Content file.txt          # type
Get-Content file.txt -Tail 10 # 后 10 行(对应 Linux tail)

看日志用 Get-Content log.txt -Follow(相当于 Linux 的 tail -f)。


5. 搜索与查找

1
2
3
4
5
6
7
8
findstr "关键词" file.txt        :: 在文件里搜(对应 Linux grep)
findstr /i "hello" file :: 忽略大小写
findstr /n "hello" file :: 显示行号
findstr /s "关键词" *.txt :: 递归搜子目录

:: 找文件:根目录下按名字找
dir /s /b *.pdf :: 列出所有 pdf 的完整路径
where notepad :: 找 notepad 在哪

PowerShell 搜内容:

1
Select-String -Path *.log -Pattern "error" -i

6. 通配符

1
2
3
4
dir *.txt            :: * 匹配任意多个字符
dir file?.txt :: ? 匹配单个字符
dir file[1-3].txt :: [] 匹配字符集合(对应 Linux 同款)
del *.log :: 删除所有日志

通配符和 Linux 几乎一样:* 任意多个、? 一个、[] 集合。


7. 属性与权限

1
2
3
attrib file.txt      :: 查看文件属性(R只读 H隐藏 S系统 A存档)
attrib +h secret.txt :: 给文件加"隐藏"属性
attrib -h secret.txt :: 去掉隐藏

Windows 的”权限”和 Linux 的 rwx 体系完全不同,日常更靠”隐藏属性”和 NTFS 权限(右键-属性-安全)。


8. 用户与提权

1
2
3
4
whoami               :: 当前用户名
whoami /groups :: 当前所属组
net user :: 列出所有用户
net user 用户名 密码 :: 改密码

以管理员运行(对应 Linux sudo):

  • 方法一:在开始菜单搜 cmd → 右键 → 以管理员身份运行。
  • 方法二:Win + X → 选「终端(管理员)」。

PowerShell 里临时提升:

1
Start-Process powershell -Verb RunAs   # 开一个管理员 PowerShell

9. 环境变量

1
2
3
4
5
6
7
8
echo %PATH%          :: 查看 PATH(命令搜索路径,按 ; 分隔,对应 Linux $PATH)
echo %USERPROFILE% :: 用户目录
set :: 查看所有环境变量
set MYNAME=value :: 设置(仅当前窗口生效)

:: 想永久生效(写入用户环境变量)
setx MYNAME value
setx PATH "%PATH%;C:\newpath" :: 往 PATH 里加一个目录

装完命令行工具发现「命令找不到」,十有八九是它的目录不在 %PATH% 里(setx 加进去,重开终端才生效)。

PowerShell 里:

1
2
$env:PATH
$env:MYNAME = "value"

10. 进程管理

1
2
3
4
5
6
tasklist             :: 列出所有进程(对应 Linux ps)
tasklist | findstr python :: 找特定进程

taskkill /im notepad.exe :: 按名字结束进程(对应 Linux pkill)
taskkill /f /im notepad.exe :: 强制结束
taskkill /pid 1234 :: 按 PID 结束

PowerShell 更直观:

1
2
Get-Process            # tasklist
Stop-Process -Name notepad

11. 磁盘

1
2
3
4
wmic logicaldisk get name,freespace,size   :: 查看各盘符容量
wmic diskdrive get model,size :: 查看物理硬盘

chkdsk C: :: 检查并修复磁盘错误(常需要管理员)

图形化看磁盘:Win + X → 磁盘管理。命令行里用得最多的是查盘符剩余空间,用 wmic。


12. 网络

1
2
3
4
5
6
7
ipconfig               :: 查看本机 IP(对应 Linux ip addr)
ping baidu.com :: 测连通(Ctrl+C 停)
tracert baidu.com :: 路由追踪(对应 Linux traceroute)
nslookup baidu.com :: 查 DNS 解析
netstat -ano :: 看监听端口和对应进程 PID(对应 Linux ss -ltnp)

curl http://example.com :: 发 HTTP 请求(Win10+ 自带,对应 Linux curl)

想找出「哪个进程占了某个端口」:netstat -ano | findstr :8080,再用 tasklist | findstr 对应的PID。


13. 压缩与打包

1
2
3
4
:: Win10 1803+ 自带 tar,和 Linux 很像
tar -czf a.tar.gz dir\ :: 打包压缩
tar -xzf a.tar.gz :: 解压
tar -xzf a.tar.gz -C C:\tmp :: 解压到指定目录
1
2
Compress-Archive -Path dir\* -DestinationPath a.zip
Expand-Archive -Path a.zip -DestinationPath dir

右键也能压缩;命令行用 tar(现代)或 PowerShell 的 Compress-Archive。


14. 管道与重定向

和 Linux 思路完全一致:把上一个命令的输出接到下一个。

1
2
3
4
5
6
7
8
9
10
11
12
:: 管道 |
tasklist | findstr python | more

:: 重定向
命令 > file.txt :: 覆盖写入
命令 >> file.txt :: 追加写入
命令 < input.txt :: 从文件读入
命令 2> err.txt :: 只重定向错误输出

:: 组合符
cmd1 && cmd2 :: cmd1 成功才执行 cmd2
cmd1 || cmd2 :: cmd1 失败才执行 cmd2

|、>、>> 和 Linux 一模一样,这是命令行的通用语言。


15. 文本处理

Windows 文本处理工具比 Linux 少,但基本够用:

1
2
3
4
5
sort file.txt            :: 排序
sort /r file.txt :: 倒序
findstr /i "a" file.txt :: 过滤(代替 grep)

:: 去重:CMD 没有 uniq,用 PowerShell

PowerShell 里强大很多(接近 Linux 的 sed/awk):

1
2
3
Get-Content file.txt | Sort-Object -Unique     # 排序去重
Get-Content file.txt | Where-Object {$_ -match "error"} # 过滤
Get-Content file.txt | Select-Object -First 10 # 取前 10 行

16. 包管理(winget)

Windows 10/11 自带 winget,一键装软件,相当于 Linux 的 apt:

1
2
3
4
5
winget search vim        :: 搜索软件
winget install vim :: 安装
winget upgrade :: 升级已装软件
winget list :: 列出已装软件
winget uninstall vim :: 卸载

其它包管理器:choco(Chocolatey)、scoop(绿色免打扰,推荐开发者)。


17. 系统信息

1
2
3
4
5
systeminfo             :: 系统详细信息(系统版本、内存、BIOS 等)
hostname :: 主机名
ver :: Windows 版本
date :: 当前日期
time :: 当前时间
1
Get-ComputerInfo       # 更详细

18. 编辑器

1
notepad file.txt       :: 记事本打开

开发建议装 VS Code:

1
code file.txt          :: 用 VS Code 打开(需先安装并勾选添加到 PATH)

命令行里先能用 notepad;写代码、看大文件强烈建议装 VS Code。


19. 批处理与 PowerShell 脚本入门

.bat 批处理(把一串命令写进 .bat 文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
:: 变量
set name=world
echo hello %name%

:: 判断
if exist file.txt (
echo 文件存在
) else (
echo 文件不存在
)

:: 循环
for %%i in (1 2 3) do (
echo 第 %%i 次
)

PowerShell 脚本(.ps1)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 变量
$name = "world"
Write-Host "hello $name"

# 判断
if (Test-Path "file.txt") {
Write-Host "文件存在"
}

# 循环
foreach ($i in 1..3) {
Write-Host "第 $i 次"
}

运行 .ps1 前若提示禁止执行脚本:Set-ExecutionPolicy -Scope CurrentUser RemoteSigned(以管理员运行 PowerShell)。


20. 定时任务

1
2
3
4
5
6
schtasks /create /tn 任务名 /tr "C:\path\script.bat" /sc daily /st 09:00
schtasks /query :: 查看所有任务
schtasks /delete /tn 任务名 /f :: 删除任务

:: 每分钟运行
schtasks /create /tn 任务名 /tr "echo hi >> C:\log.txt" /sc minute /mo 1

图形化:Win + R → 输 taskschd.msc(任务计划程序)。


21. 服务管理

1
2
3
4
5
6
7
sc query             :: 列出所有服务
sc query sshd :: 查看某个服务
net start sshd :: 启动服务
net stop sshd :: 停止服务

:: 图形化
services.msc :: Win+R 打开服务管理器

net start/net stop 是 CMD 传统做法;新用 sc 或 PowerShell Get-Service / Start-Service。


22. 其他实用命令

1
2
3
4
5
6
7
where python               :: 找命令的实际路径
clip :: 把输出复制到剪贴板(如 dir | clip)
shutdown /s /t 60 :: 60 秒后关机(/r 重启 /s 关机)
shutdown /a :: 取消关机
tree :: 树状显示目录结构
fc a.txt b.txt :: 对比两个文件差异(对应 Linux diff)
start file.txt :: 用默认程序打开文件

23. 快捷键与技巧

快捷键 作用
Tab 自动补全文件名
Ctrl+C 中断当前命令
Ctrl+V 在 CMD 里粘贴
Ctrl+H 在 CMD 里退格
↑ / ↓ 翻历史命令
F7 弹出历史命令列表
F3 重复上一条命令
F8 搜索历史命令
Win+R 快速打开运行框
Win+X 快捷菜单(管理员终端等)
1
2
3
4
:: 小技巧
cd /d D:\data :: 跨盘符切目录必须加 /d
dir /b | clip :: 把文件名列表复制到剪贴板
magic :: 新建一个全局目录,方便快速 cd(配合 setx 和 PATH)

常用 d: 和 cd /d 的组合:在 D 盘和 C 盘之间切,CMD 里跨盘符切目录要加 /d。


24. 推荐学习路线

  1. 先练熟高频命令:dir / cd / mkdir / copy / move / del / type / findstr / tasklist / taskkill / ipconfig / ping / systeminfo。
  2. 搞懂管道和重定向(| > >>),和 Linux 是同一个思想。
  3. 装 winget 包管理器,装 VS Code、装 git,把这些命令用起来。
  4. PowerShell 值得学:它比 CMD 强太多,很多 Linux 的用法(Sort-Object、Where-Object)在 PowerShell 里都有对应。
  5. 和 Linux 对照着学:同一件事,ls↔dir、cp↔copy、mv↔move、rm↔del、grep↔findstr、ps↔tasklist,一一对应着记最快。

学习原则:不要死记,多用 命令 /? 查;不知道命令就 where 找,记不住就 F7 翻历史。两套系统对照学,事半功倍。