在 Windows 系统运维、开发调试、故障排查等日常工作中,命令提示符(CMD)依然是轻量、高效、不可或缺的工具。虽然 PowerShell 功能更强大,但 CMD 语法简洁、兼容性好,特别适合写入批处理脚本、集成进 Jenkins 流水线或远程执行任务。
本文全面整理Windows CMD 最常用、最实用的命令与技巧,并重点强化运维场景下的组合命令,助你快速定位问题、高效完成任务。
一、基础操作命令
| 命令 | 说明 |
|---|---|
help | 显示所有内部命令帮助 |
cls | 清屏 |
exit | 退出 CMD |
echo [内容] | 输出文本(如echo Build Success) |
echo. | 输出空行(常用于日志分隔) |
pause | 暂停,提示“请按任意键继续…” |
color [属性] | 设置控制台颜色(如color 0a:黑底绿字)0=黑,1=蓝,2=绿,a=亮绿 |
title [文本] | 修改 CMD 窗口标题(适用于批处理脚本) |
二、文件与目录操作
| 命令 | 说明 |
|---|---|
dir | 列出目录内容 常用参数: /a显示所有文件(含隐藏/系统)/s递归子目录/b简洁模式(仅路径)/o:n按名称排序,/o:d按日期 |
cd [路径] | 切换目录(如cd C:\data) |
cd .. | 返回上一级 |
cd \ | 返回当前盘根目录 |
pushd [路径]/popd | 临时切换目录并压栈/弹栈(支持 UNC 路径) |
md/mkdir [目录] | 创建目录 |
rd/rmdir /s /q [目录] | 强制删除非空目录(/s递归,/q静默) |
del /f /q [文件] | 强制删除只读/隐藏文件(/f强制,/q不提示) |
copy [源] [目标] | 单文件复制 |
xcopy [源] [目标] /E /I /Y /H | 强大目录复制工具/E=含空子目录,/I=目标为目录,/Y=自动确认,/H=含隐藏/系统文件 |
robocopy [源] [目标] /MIR | 企业级同步工具(Windows Vista+ 内置)/MIR=镜像同步(删除目标端多余文件) |
move [源] [目标] | 移动或重命名 |
type [文件] | 查看文本文件内容(类似 Linuxcat) |
more < [文件] | 分页显示大文件 |
ren [原名] [新名] | 重命名(支持通配符,如ren *.txt *.bak) |
attrib | 查看/修改文件属性(只读 R、隐藏 H、系统 S、存档 A) 例: attrib -r -h file.txt |
三、系统信息与管理
| 命令 | 说明 |
|---|---|
systeminfo | 显示完整系统信息(OS、补丁、内存、网卡等) |
hostname | 显示计算机名 |
ver | 显示 Windows 版本 |
wmic os get caption,version | 用 WMI 获取更规范的系统版本 |
ipconfig /all | 查看详细网络配置(IP、MAC、DNS、DHCP 等) |
ipconfig /release+/renew | 释放并重新获取 DHCP 地址 |
ping -n 4 www.baidu.com | 测试连通性(-n指定次数) |
tracert www.google.com | 路由跟踪 |
pathping | 结合 ping + tracert,分析网络延迟与丢包 |
netstat -ano | 查看所有连接与监听端口(-a=全部,-n=数字形式,-o=显示 PID) |
tasklist | 列出所有进程(可加/fi "status eq running") |
taskkill /PID 1234 /F | 强制结束指定 PID 的进程(/F=force) |
taskkill /IM chrome.exe /F | 按进程名强制结束(支持通配符*) |
taskkill /F /FI "MEMUSAGE gt 500000" | 杀掉内存占用 >500MB 的进程 |
shutdown /s /t 0 | 立即关机(/r=重启,/l=注销,/a=取消) |
schtasks | 管理计划任务(创建/查询/删除) |
driverquery | 列出已安装驱动 |
💡杀不掉的进程?
- 先用
tasklist | findstr "进程名"找 PID- 再用
taskkill /PID [PID] /F强制终止- 若仍失败,可能是系统进程、被其他进程锁定,或权限不足 → 尝试以管理员身份运行 CMD
- 极端情况:使用
Process Explorer(Sysinternals 工具)或进安全模式处理
四、用户与权限管理
| 命令 | 说明 |
|---|---|
whoami | 显示当前用户(含域) |
whoami /all | 显示用户 SID、组、权限令牌 |
net user | 列出本地用户 |
net user username * | 修改用户密码(*表示交互输入) |
net user username /delete | 删除用户 |
net localgroup administrators | 查看管理员组成员 |
net localgroup administrators username /add | 将用户加入管理员组 |
net accounts | 查看密码策略(长度、有效期等) |
gpresult /r | 查看当前生效的组策略 |
五、网络与远程操作
| 命令 | 说明 |
|---|---|
nslookup example.com | DNS 查询 |
arp -a | 查看本地 ARP 缓存(IP ↔ MAC 映射) |
route print | 查看路由表 |
netsh interface ip show config | 查看网卡 IP 配置(比 ipconfig 更结构化) |
net use | 查看已映射的网络驱动器 |
net use Z: \\server\share /user:domain\user | 映射网络驱动器(带认证) |
net use * /delete /y | 删除所有映射 |
net view \\computer | 查看远程计算机共享列表 |
telnet ip port | 测试 TCP 端口连通性(需先在“启用或关闭 Windows 功能”中安装 Telnet 客户端) |
curl/wget | Windows 10/11 已内置(用于下载或 API 调用) |
六、环境变量与批处理
常用环境变量
%USERPROFILE% → C:\Users\用户名 %WINDIR% → C:\Windows %TEMP% → 临时目录 %PATH% → 系统路径 %DATE% %TIME% → 当前日期时间 %~dp0 → 当前批处理文件所在目录(含反斜杠)设置变量
set VAR=value echo %VAR%⚠️ 注意:
set设置的变量仅在当前 CMD 会话有效。永久设置需通过 GUI 或setx:
setx JAVA_HOME "C:\java" :: 永久设置(对新窗口生效)批处理控制结构示例
@echo off setlocal enabledelayedexpansion echo 当前目录:%cd% echo 脚本位置:%~dp0% REM 判断文件是否存在 if exist "config.ini" ( echo 配置文件存在 ) else ( echo 错误:缺少 config.ini exit /b 1 ) REM 循环处理日志文件 for %%f in (*.log) do ( echo 处理 %%f type "%%f" | findstr "ERROR" > "errors_%%f" ) REM 调用另一个脚本并传参 call deploy.bat %1 %2 pause七、运维实战:实用组合技巧(重点增强)
1.精准定位并强制终止顽固进程
:: 1. 查找占用 8080 端口的进程 netstat -ano | findstr :8080 :: 假设输出 PID 为 5678 tasklist | findstr 5678 :: 2. 强制终止(/F 是关键!) taskkill /PID 5678 /F :: 若进程名已知(如 java.exe) taskkill /IM java.exe /F2.批量清理 N 天前的日志
:: 删除 logs 目录下 7 天前的所有 .log 文件 forfiles /p "C:\app\logs" /s /m *.log /d -7 /c "cmd /c del @path"3.快速清空大日志文件(不删除文件,仅清内容)
type nul > application.log4.查看系统最近启动时间
net statistics server :: 或 systeminfo | findstr /i /c:"system boot"5.一键导出所有服务状态
sc query > services.txt6.查找大文件(>100MB)
:: 列出当前盘所有 >100MB 的文件(需 PowerShell 更高效,但 CMD 可用 dir) dir /s /-c | findstr /r /c:"^[0-9].*[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" :: 更推荐用 PowerShell: Get-ChildItem -Recurse | Where Length -gt 100MB7.备份并替换配置文件(原子操作)
copy config.ini config.ini.bak copy new_config.ini config.ini8.远程执行命令(需提前配置)
:: 使用 psexec(Sysinternals 工具) psexec \\remote-pc -u admin -p pass ipconfig9.监控进程是否存在,不存在则启动
tasklist | findstr /i "myapp.exe" >nul if %errorlevel% neq 0 ( echo 进程未运行,正在启动... start "" "C:\app\myapp.exe" )10.获取本机 IP(用于脚本变量)
for /f "tokens=2 delims=[]" %%a in ('ping -4 -n 1 %computername% ^| findstr "["') do set ip=%%a echo 本机IP:%ip%八、常见问题与最佳实践
中文乱码:
执行chcp 65001切换为 UTF-8(需 CMD 字体支持,如 Consolas)
或chcp 936切回 GBK(默认)命令太长怎么换行?
使用^(脱字符):xcopy C:\source\ ^ D:\dest\ ^ /E /I /Y /H如何在 Jenkins 或自动化脚本中使用?
- 确保使用绝对路径
- 避免交互式命令(如
pause) - 用
exit /b [code]控制返回状态码 - 推荐封装为
.bat脚本,便于维护
CMD vs PowerShell?
- 简单文件操作、进程管理 → CMD 足够
- 复杂文本处理、对象操作、云 API 调用 → 用 PowerShell
九、附录:推荐工具增强 CMD 能力
| 工具 | 说明 |
|---|---|
| Windows Terminal | 微软官方现代终端,支持多标签、主题、UTF-8 |
| Sysinternals Suite | Process Explorer,PsKill,PsExec等高级工具 |
| curl / wget | 内置于 Win10+,用于下载或调用 HTTP API |
| robocopy | 比 xcopy 更可靠,支持断点续传、日志等 |
| findstr | 强大的文本搜索(支持正则/R) |
结语
CMD 是 Windows 运维的“瑞士军刀”。掌握这些命令,不仅能提升日常效率,还能在 Jenkins 自动化构建、远程部署、故障应急等场景中游刃有余。建议将常用组合命令保存为脚本,形成自己的运维工具箱。
📌提示:在自动化流程(如 Jenkins Pipeline)中调用 CMD 命令时,请务必处理好路径、权限、环境变量三大要素,避免
command not found或权限拒绝错误。