Skip to content
Published at:

常用CMD命令

Overview

文档:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands

列表

文件与目录

  • dir:列出当前目录下的文件和子目录
  • cd:切换当前工作目录
  • md / mkdir:创建新目录
  • rd / rmdir:删除空目录
  • copy:将一个或多个文件复制到指定位置
  • xcopy:增强版文件复制,支持目录树复制(比 copy 更强大)
  • del:删除一个或多个文件
  • ren / rename:重命名文件或目录
  • type:在控制台中显示文本文件内容
  • mklink:创建符号链接、硬链接或目录链接
  • attrib:显示或更改文件属性(只读、隐藏、系统等)

进程管理

  • tasklist:列出当前系统上运行的所有进程及其 PID、内存使用等信息
  • taskkill:通过 PID 或映像名终止运行中的进程
  • start:在单独窗口中启动程序或打开文件

文本处理

  • findstr:在文件或标准输入中搜索匹配的字符串,支持正则表达式(类似 grep
  • find:在文件中搜索字符串(简单版,不支持正则)
  • sort:对输入内容按行排序并输出
  • clip:将命令输出重定向到剪贴板
  • fc:比较两个文件并显示差异

网络

  • ipconfig:显示网络适配器的配置信息,如 IP 地址、子网掩码、默认网关等
  • netstat:显示活动的网络连接、监听端口、路由表和接口统计信息
  • ping:通过 ICMP 包测试网络连通性和延迟
  • tracert:追踪数据包到达目标主机所经过的路由跳数
  • nslookup:查询 DNS 记录(A、CNAME、MX 等)
  • netsh:网络配置工具,支持防火墙、IP、WLAN 等模块化管理
  • route:显示或修改本地路由表
  • arp:显示或修改 ARP 缓存表

磁盘与文件系统

  • chkdsk:检查磁盘卷的文件系统错误并尝试修复
  • diskpart:磁盘分区管理工具(创建、删除、格式化分区等)
  • format:格式化磁盘卷
  • sfc:系统文件检查器,扫描并修复受保护的系统文件
  • fsutil:文件系统高级管理工具

系统信息

  • systeminfo:显示系统硬件和软件的详细配置信息
  • whoami:显示当前登录用户名和安全上下文
  • ver:显示操作系统版本号
  • driverquery:列出已安装的驱动程序
  • hostname:显示计算机名

安全与权限

  • icacls:显示或修改文件的访问控制列表(ACL)
  • takeown:获取文件或目录的所有权

注册表

  • reg:命令行注册表编辑器,支持查询、添加、删除、导入、导出

服务与计划任务

  • sc:服务控制器,用于查询、启动、停止、配置 Windows 服务
  • schtasks:计划任务管理,用于创建、删除、查询、运行、更改计划任务

电源与系统管理

  • shutdown:关闭、重启计算机或注销当前会话
  • powercfg:电源配置管理,生成电池报告、睡眠状态诊断等
  • chcp:显示或更改当前控制台的代码页(字符集编码,如 936 为 GBK,65001 为 UTF-8)

脚本与批处理

  • echo:在控制台输出文本或控制命令回显开关
  • set:显示或设置环境变量
  • timeout:暂停脚本执行指定秒数

详细说明

tasklist

显示当前系统上运行的所有进程。

cmd
# 列出所有进程
tasklist

# 筛选特定进程名
tasklist /FI "IMAGENAME eq notepad.exe"

# 按 PID 筛选
tasklist /FI "PID eq 1234"

# 按内存使用筛选(大于 100 MB)
tasklist /FI "MEMUSAGE gt 102400"

# 输出为 CSV 格式
tasklist /FO CSV

# 显示进程加载的模块(DLL)
tasklist /M

taskkill

通过 PID 或映像名终止进程。

cmd
# 按映像名终止(所有同名进程)
taskkill /IM notepad.exe

# 强制终止
taskkill /F /IM notepad.exe

# 按 PID 终止
taskkill /PID 1234

# 终止进程及其子进程
taskkill /T /IM chrome.exe

# 按筛选条件终止(如内存 > 500MB 的进程)
taskkill /F /FI "MEMUSAGE gt 512000"

findstr

在文件或标准输入中搜索匹配的字符串,支持正则表达式。

cmd
# 在单个文件中搜索
findstr "error" app.log

# 在多个文件中搜索(递归目录)
findstr /S "TODO" *.cpp

# 忽略大小写
findstr /I "timeout" *.js

# 使用正则表达式
findstr /R "[0-9]\\.[0-9]\\.[0-9]" version.txt

# 显示行号
findstr /N "error" app.log

# 反向匹配(不包含的行)
findstr /V "debug" app.log

# 统计匹配行数
findstr /C:"error" app.log | find /C /V ""

ipconfig

显示网络适配器的配置信息。

cmd
# 基本信息(IP、子网掩码、网关)
ipconfig

# 详细信息(DNS、MAC 地址、DHCP 等)
ipconfig /all

# 释放 DHCP 租约
ipconfig /release

# 重新获取 DHCP 租约
ipconfig /renew

# 清除 DNS 缓存
ipconfig /flushdns

# 查看 DNS 缓存内容
ipconfig /displaydns

netstat

显示网络连接、监听端口、路由表和接口统计。

cmd
# 所有活动连接
netstat

# 显示可执行文件名和 PID
netstat -b

# 显示所有连接和监听端口(数值形式)
netstat -an

# 结合 -b 和 -an,需要管理员权限
netstat -abn

# 显示路由表
netstat -r

# 按协议筛选(TCP)
netstat -an | findstr "TCP"

# 按端口筛选(443
netstat -an | findstr ":443"

# 每 N 秒刷新一次
netstat -an 5

chcp

显示或更改当前控制台的代码页(字符集编码)。

cmd
# 查看当前代码页
chcp

# 切换为 UTF-865001
chcp 65001

# 切换为 GBK(936,简体中文)
chcp 936

# 常见代码页:
# 936   — GBK(简体中文)
# 950   — Big5(繁体中文)
# 437   — 美国英语
# 65001 — UTF-8

sc

服务控制器,用于管理和配置 Windows 服务。

cmd
# 查询所有服务状态
sc query

# 查询特定服务
sc query wuauserv

# 查询服务详细配置
sc qc wuauserv

# 启动服务
sc start wuauserv

# 停止服务
sc stop wuauserv

# 设置启动类型(auto/manual/disabled)
sc config wuauserv start= auto

# 创建服务
sc create MyService binPath= "C:\\path\\to\\service.exe" start= auto

# 删除服务
sc delete MyService

schtasks

计划任务管理,用于创建、查询和运行计划任务。

cmd
# 列出所有计划任务
schtasks /query

# 详细列出所有任务(V → verbose)
schtasks /query /V /FO LIST

# 创建每日任务
schtasks /create /tn "MyBackup" /tr "C:\\backup.bat" /sc daily /st 02:00

# 创建每周任务(周一)
schtasks /create /tn "WeeklyReport" /tr "C:\\report.bat" /sc weekly /d MON /st 09:00

# 立即运行指定任务
schtasks /run /tn "MyBackup"

# 结束指定任务
schtasks /end /tn "MyBackup"

# 删除任务
schtasks /delete /tn "MyBackup"

# 任务详情
schtasks /query /tn "MyBackup" /V /FO LIST

dir

列出目录中的文件和子目录。

cmd
# 列出当前目录内容
dir

# 列出文件,宽格式分栏显示
dir /W

# 分页显示
dir /P

# 显示隐藏文件和系统文件
dir /A

# 按扩展名筛选
dir *.txt

# 递归列出所有子目录文件
dir /S *.log

# 按修改时间排序(降序)
dir /O-D

cd

切换当前工作目录。

cmd
# 切换到指定目录
cd C:\Windows\System32

# 返回上一级目录
cd ..

# 返回根目录
cd \

# 切换到其他驱动器
cd /D D:\data

# 显示当前目录路径
cd

md / mkdir

创建新目录。

cmd
# 创建单个目录
mkdir newfolder

# 同时创建多级目录
mkdir C:\a\b\c

# 创建多个目录
md dir1 dir2 dir3

rd / rmdir

删除空目录。

cmd
# 删除空目录
rmdir emptyfolder

# 递归删除目录树(包含文件)
rmdir /S folder

# 安静模式,不提示确认
rmdir /S /Q folder

copy

将一个或多个文件复制到指定位置。

cmd
# 复制文件到目标目录
copy file.txt D:\backup\

# 复制并重命名
copy file.txt D:\backup\file2.txt

# 合并多个文本文件
copy file1.txt + file2.txt merged.txt

# 复制所有 .txt 文件
copy *.txt D:\backup\

# 不提示覆盖确认
copy /Y source.txt dest.txt

xcopy

增强版文件复制,支持目录树复制。

cmd
# 复制整个目录树(含子目录)
xcopy /S /E source\ target\

# 仅复制更新的文件
xcopy /D source\ target\

# 静默复制(不显示文件名)
xcopy /Q source\* target\

# 复制目录结构(不复制文件)
xcopy /T source\ structure\

# 保留文件属性
xcopy /K source\* target\

del

删除一个或多个文件。

cmd
# 删除单个文件
del file.txt

# 删除所有 .tmp 文件
del *.tmp

# 递归删除子目录中所有 .log 文件
del /S *.log

# 强制删除只读文件
del /F readme.txt

# 安静模式,不提示确认
del /Q *.tmp

ren / rename

重命名文件或目录。

cmd
# 重命名文件
ren oldname.txt newname.txt

# 批量修改扩展名
ren *.txt *.md

# 修改部分文件名(通配符)
ren report_*.txt report_*.bak

type

显示文本文件内容。

cmd
# 显示文件内容
type readme.txt

# 连接两个文件输出
type file1.txt file2.txt

# 输出到另一个文件
type source.txt > target.txt

创建符号链接、硬链接或目录链接(需管理员权限)。

cmd
# 创建文件符号链接
mklink link.txt C:\real\file.txt

# 创建目录符号链接
mklink /D linkdir C:\real\folder

# 创建硬链接(同一卷内)
mklink /H hardlink.txt original.txt

# 创建目录连接点(Junction)
mklink /J junctiondir C:\real\folder

attrib

显示或更改文件属性。

cmd
# 显示当前目录文件属性
attrib

# 显示子目录文件属性
attrib /S

# 设置只读属性
attrib +R file.txt

# 取消隐藏属性
attrib -H file.txt

# 递归取消所有文件的隐藏和系统属性
attrib -H -S /S *

start

启动程序或打开文件。

cmd
# 启动程序
start notepad.exe

# 在新窗口中运行命令
start cmd

# 打开文件(用关联程序)
start document.pdf

# 打开 URL(默认浏览器)
start https://github.com

# 最小化启动
start /MIN notepad.exe

# 启动并等待完成
start /WAIT setup.exe

find

在文件中搜索字符串(简单版,不支持正则)。

cmd
# 在文件中搜索
find "error" app.log

# 忽略大小写
find /I "error" app.log

# 反向匹配(不包含指定字符串的行)
find /V "debug" app.log

# 统计匹配行数
find /C "error" app.log

# 显示行号
find /N "error" app.log

sort

对输入内容按行排序并输出。

cmd
# 按字母顺序排序
sort file.txt

# 降序排序
sort /R file.txt

# 从第 N 列开始排序
sort /+5 file.txt

# 将排序结果输出到文件
sort file.txt > sorted.txt

# 对命令输出排序
dir | sort

clip

将命令输出重定向到剪贴板。

cmd
# 将命令输出复制到剪贴板
dir | clip

# 将文件内容复制到剪贴板
clip < readme.txt

# 将 ipconfig 结果复制到剪贴板
ipconfig /all | clip

# 将错误输出也复制到剪贴板
dir 2>&1 | clip

fc

比较两个文件并显示差异。

cmd
# 逐行比较两个文件
fc file1.txt file2.txt

# 二进制比较
fc /B file1.exe file2.exe

# 忽略大小写
fc /C file1.txt file2.txt

# 宽格式显示差异
fc /W file1.txt file2.txt

ping

通过 ICMP 包测试网络连通性。

cmd
# 持续发送 4 个数据包
ping github.com

# 持续 ping 直到手动停止(Ctrl+C)
ping -t github.com

# 指定发送次数
ping -n 10 github.com

# 指定数据包大小(字节)
ping -l 1500 github.com

# 指定超时时间(毫秒)
ping -w 500 github.com

tracert

追踪到目标主机的路由路径。

cmd
# 追踪路由
tracert github.com

# 不解析 IP 为主机名(更快)
tracert -d github.com

# 指定最大跳数
tracert -h 20 github.com

# 指定超时时间(毫秒)
tracert -w 1000 github.com

nslookup

DNS 查询工具。支持交互模式和命令模式。

cmd
# 查询域名的 A 记录(IP 地址)
nslookup github.com

# 查询 MX 记录(邮件服务器)
nslookup -type=MX github.com

# 查询 CNAME 记录
nslookup -type=CNAME www.github.com

# 使用指定 DNS 服务器查询
nslookup github.com 8.8.8.8

# 反向查询(IP → 域名)
nslookup 8.8.8.8

netsh

网络配置管理工具。

cmd
# 重启所有网络适配器
netsh interface reset all

# 重置 TCP/IP 协议栈
netsh int ip reset

# 重置 Winsock 目录
netsh winsock reset

# 显示 WLAN 网络列表
netsh wlan show networks

# 显示 WLAN 密码
netsh wlan show profile name="SSID" key=clear

# 查看防火墙规则
netsh advfirewall firewall show rule name=all

# 设置 IP 地址(静态)
netsh interface ip set address "以太网" static 192.168.1.100 255.255.255.0 192.168.1.1

route

显示或修改本地路由表。

cmd
# 显示路由表
route print

# 添加静态路由
route add 10.0.0.0 mask 255.0.0.0 192.168.1.1

# 添加持久路由(重启保留)
route -p add 10.0.0.0 mask 255.0.0.0 192.168.1.1

# 删除路由
route delete 10.0.0.0

# 清除所有非默认路由
route -f

arp

显示或修改 ARP 缓存表。

cmd
# 显示 ARP 缓存
arp -a

# 添加静态 ARP 条目
arp -s 192.168.1.100 00-AA-BB-CC-DD-EE

# 删除 ARP 条目
arp -d 192.168.1.100

# 清除整个 ARP 缓存
arp -d *

chkdsk

检查磁盘卷的文件系统错误并尝试修复。

cmd
# 只读检查
chkdsk C:

# 检查并修复文件系统错误
chkdsk C: /F

# 修复文件系统并扫描坏扇区
chkdsk C: /F /R

# 强制卸载卷(检查前)
chkdsk C: /F /X

# 跳过目录结构中的循环检查
chkdsk C: /C

diskpart

磁盘分区管理工具(交互式)。

cmd
# 启动 diskpart
diskpart

# diskpart 内部命令:
# list disk           — 列出所有磁盘
# select disk 0       — 选择磁盘 0
# list partition      — 列出所选磁盘的分区
# create partition primary size=102400  — 创建主分区 100GB
# delete partition    — 删除所选分区
# clean               — 清除磁盘所有分区
# format fs=ntfs quick — 快速格式化为 NTFS
# assign letter=D     — 分配驱动器号 D

format

格式化磁盘卷。

cmd
# 快速格式化
format D: /Q

# 格式化为 NTFS
format D: /FS:NTFS

# 格式化为 FAT32
format D: /FS:FAT32

# 指定卷标
format D: /V:DataDrive

# 完整格式化(非快速)
format D:

sfc

系统文件检查器,扫描并修复受保护的系统文件。

cmd
# 扫描系统文件完整性
sfc /scannow

# 仅扫描,不修复
sfc /verifyonly

# 扫描并修复特定文件
sfc /scanfile=C:\Windows\System32\kernel32.dll

# 离线修复(指定 Windows 目录)
sfc /scannow /OFFBOOTDIR=C:\ /OFFWINDIR=C:\Windows

fsutil

文件系统高级管理工具。

cmd
# 显示卷信息
fsutil fsinfo volumeinfo C:

# 查看驱动器列表
fsutil fsinfo drives

# 查看文件系统类型
fsutil fsinfo ntfsinfo C:

# 创建硬链接
fsutil hardlink create newlink.txt existing.txt

# 管理 8.3 短文件名
fsutil 8dot3name query C:

systeminfo

显示系统软硬件详细配置。

cmd
# 显示系统信息
systeminfo

# 指定远程计算机
systeminfo /S remote-pc

# 指定用户凭据
systeminfo /S remote-pc /U domain\user /P password

# 以 CSV 格式输出
systeminfo /FO CSV

whoami

显示当前用户和安全上下文信息。

cmd
# 当前用户名
whoami

# 显示 SID
whoami /user

# 显示所属组
whoami /groups

# 显示权限
whoami /priv

# 完整信息
whoami /all

ver

显示操作系统版本号。

cmd
ver

driverquery

列出已安装的驱动程序。

cmd
# 列出所有驱动程序
driverquery

# 以 CSV 格式输出
driverquery /FO CSV

# 显示数字签名的驱动程序
driverquery /SI

# 指定远程计算机
driverquery /S remote-pc

hostname

显示当前计算机的网络名称。

cmd
hostname

icacls

显示或修改文件和目录的 ACL。

cmd
# 查看文件权限
icacls file.txt

# 授予用户完全控制权限
icacls file.txt /grant username:F

# 授予用户读、写权限
icacls folder /grant username:(R,W)

# 移除用户权限
icacls file.txt /remove username

# 重置为继承的权限
icacls file.txt /reset

# 递归应用到子目录和文件
icacls folder /grant username:F /T

takeown

获取文件或目录的所有权(需管理员权限)。

cmd
# 获取文件所有权
takeown /F file.txt

# 递归获取目录所有权
takeown /F folder /R

# 获取所有权并设置恢复密码
takeown /F file.txt /A

reg

命令行注册表编辑器。

cmd
# 查询键值
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion

# 查询特定值
reg query HKLM\SYSTEM\CurrentControlSet\Services /s

# 添加键值
reg add HKCU\Software\MyApp /v Version /t REG_SZ /d "1.0"

# 删除键值
reg delete HKCU\Software\MyApp /v Version

# 导出注册表项
reg export HKLM\SOFTWARE\MyApp C:\backup\myapp.reg

# 导入注册表文件
reg import C:\backup\myapp.reg

shutdown

关闭或重启计算机。

cmd
# 立即关机
shutdown /s /t 0

# 立即重启
shutdown /r /t 0

# 定时关机(60 秒后)
shutdown /s /t 60

# 注销当前用户
shutdown /l

# 强制关闭(不等待程序响应)
shutdown /s /f /t 0

# 取消计划内的关机
shutdown /a

# 进入高级启动选项
shutdown /r /o /t 0

powercfg

电源配置管理。

cmd
# 查看电源方案列表
powercfg /list

# 查看当前电源方案详情
powercfg /query

# 生成电池使用报告
powercfg /batteryreport

# 导出电源方案
powercfg /export C:\backup\powerplan.pow <GUID>

# 查看设备唤醒记录
powercfg /lastwake

# 查看哪些设备可以唤醒计算机
powercfg /devicequery wake_armed

# 查看睡眠状态支持
powercfg /a

# 生成系统睡眠诊断报告
powercfg /sleepstudy

echo

在控制台输出文本或控制命令回显。

cmd
# 输出文本
echo Hello World

# 输出变量值
echo %PATH%

# 输出空行
echo.

# 写入文本到文件
echo Hello > file.txt

# 追加文本到文件
echo Another line >> file.txt

# 关闭命令回显(批处理中常用)
@echo off

set

显示或设置环境变量。

cmd
# 显示所有环境变量
set

# 设置临时变量(当前会话有效)
set MY_VAR=hello

# 追加路径到 PATH
set PATH=%PATH%;C:\MyTools

# 查看特定变量
set PATH

# 永久设置系统变量(需管理员权限)
setx MY_VAR "hello"
setx /M PATH "%PATH%;C:\MyTools"

timeout

暂停批处理脚本执行指定秒数。

cmd
# 暂停 5
timeout /t 5

# 暂停 30 秒且不允许按键跳过
timeout /t 30 /nobreak

# 暂停并提示按任意键继续
timeout /t -1