Windows CMD命令行基础与实用技巧
1. CMD基础入门认识Windows命令行Windows命令提示符CMD是微软Windows操作系统中的命令行解释程序它为用户提供了通过输入命令来与操作系统交互的文本界面。虽然现在大多数用户更习惯使用图形界面GUI但CMD仍然是系统管理员、开发人员和高级用户不可或缺的工具。1.1 CMD的多种打开方式在日常使用中有几种常见的方法可以打开CMD窗口通过运行对话框按下WinR组合键输入cmd按回车键通过开始菜单搜索点击开始按钮或按Win键在搜索框中输入cmd从搜索结果中选择命令提示符通过文件资源管理器打开任意文件夹在地址栏输入cmd按回车键会在当前目录打开CMD通过右键菜单在文件夹中按住Shift键并右键点击空白处选择在此处打开命令窗口管理员模式运行在开始菜单中找到命令提示符右键选择以管理员身份运行这对于需要更高权限的操作特别重要提示在Windows 10及更高版本中微软推荐使用Windows Terminal作为现代替代品它集成了CMD、PowerShell和WSL等多种命令行环境。1.2 CMD窗口的基本操作了解一些基本的CMD窗口操作可以提高工作效率复制文本选中文本后按Enter键或右键菜单选择复制粘贴文本右键点击窗口标题栏→编辑→粘贴或直接右键粘贴清屏输入cls命令中断当前命令按CtrlC自动补全按Tab键可以自动补全文件名或目录名查看命令历史按F7键显示历史命令列表快速查找历史命令按F8键根据输入的部分命令查找匹配的历史命令1.3 CMD与PowerShell的区别虽然CMD仍然被广泛使用但微软正在逐步用PowerShell取代它。两者主要区别如下特性CMDPowerShell开发时间1981年2006年脚本语言批处理(.bat)PowerShell脚本(.ps1)对象处理仅文本支持对象命令数量有限丰富(称为cmdlet)管道功能文本传递对象传递跨平台仅Windows跨平台学习曲线简单较陡峭对于大多数日常任务CMD仍然足够使用特别是当你只需要执行简单的文件操作或运行旧的批处理脚本时。2. 文件与目录管理命令文件与目录操作是CMD最常用的功能之一。掌握这些命令可以让你高效地管理计算机上的文件和文件夹。2.1 目录导航与查看DIR - 显示目录内容DIR命令用于列出当前目录下的文件和子目录。它有许多有用的参数dir # 显示当前目录内容 dir /p # 分页显示按任意键继续 dir /w # 宽列表格式显示 dir /a # 显示所有文件包括隐藏文件 dir /s # 显示当前目录及所有子目录内容 dir /o # 排序显示(/on按名称/os按大小/od按日期) dir *.txt # 只显示.txt文件一个实用的组合是dir /a /s /on filelist.txt它可以将当前目录及其子目录中的所有文件按名称排序后保存到filelist.txt中。CD - 更改当前目录CDChange Directory命令用于切换工作目录cd # 显示当前目录 cd.. # 转到上级目录 cd\ # 转到根目录 cd folder # 进入folder目录 cd /d D:\data # 切换到D盘的data目录注意在CMD中路径可以使用反斜杠()或正斜杠(/)但通常使用反斜杠。PUSHD和POPD - 目录栈操作这对命令可以记住和返回之前的目录pushd C:\Windows # 进入C:\Windows并记住当前位置 pushd D:\Data # 进入D:\Data并记住上一个位置 popd # 返回上一个目录(C:\Windows) popd # 返回最初的位置这在编写批处理脚本时特别有用可以临时切换目录后再返回原位置。2.2 创建与删除目录MD/MKDIR - 创建目录md newfolder # 创建名为newfolder的目录 mkdir new folder # 创建名称包含空格的目录 mkdir D:\Data\Backup # 在指定路径创建目录RD/RMDIR - 删除目录rd oldfolder # 删除空目录 rd /s oldfolder # 删除目录及其所有内容(会询问确认) rd /s /q oldfolder # 静默删除不询问确认警告/s /q组合会直接删除目录及其所有内容而不提示使用时要特别小心。2.3 文件操作命令COPY - 复制文件copy file.txt newfile.txt # 复制并重命名 copy *.txt D:\Backup # 复制所有txt文件到备份目录 copy file1.txtfile2.txt combined.txt # 合并文件 copy con newfile.txt # 从控制台输入创建文件(按CtrlZ结束)XCOPY - 高级复制XCOPY比COPY功能更强大支持目录复制xcopy source dest /s /e # 复制目录及其子目录(包括空目录) xcopy *.* D:\Backup /d:08-01-2023 # 只复制2023年8月1日后修改的文件 xcopy /c /h /r /k /y # 常用参数组合/c继续出错时/h复制隐藏文件/r覆盖只读文件/k保留属性/y不提示确认DEL/ERASE - 删除文件del file.txt # 删除单个文件 del *.tmp # 删除所有.tmp文件 del /p *.bak # 删除前逐个确认 del /s /q temp\*.* # 递归删除temp目录下所有文件且不确认注意删除的文件不会进入回收站而是直接永久删除。REN/RENAME - 重命名文件ren old.txt new.txt # 重命名文件 ren old name.txt new name.txt # 重命名含空格的文件 ren *.txt *.bak # 批量修改扩展名TYPE - 查看文件内容type file.txt # 显示文件内容 type file.txt | more # 分页显示长文件 type *.txt combined.txt # 合并多个文件ATTRIB - 修改文件属性attrib r file.txt # 设为只读 attrib -h file.txt # 取消隐藏 attrib s h system.file # 设为系统和隐藏属性 attrib /s *.txt # 显示当前目录及子目录中所有txt文件的属性2.4 文件比较与查找FC - 文件比较fc file1.txt file2.txt # 比较两个文本文件 fc /b image1.jpg image2.jpg # 二进制比较 fc /n file1.txt file2.txt # 显示行号FIND - 文本搜索find error log.txt # 在文件中查找包含error的行 find /i warning *.log # 不区分大小写查找 find /c success report.txt # 统计匹配行数 find /v debug source.txt # 显示不包含debug的行FINDSTR - 高级文本搜索FINDSTR支持正则表达式功能更强大findstr error *.log # 在所有log文件中查找error findstr /i /n warning *.txt # 不区分大小写查找并显示行号 findstr /s /m main *.c # 递归搜索包含main的C文件只显示文件名 findstr ^[0-9] data.txt # 查找以数字开头的行3. 系统信息与网络命令掌握系统信息和网络相关的CMD命令对于故障排查和系统维护至关重要。3.1 系统信息命令SYSTEMINFO - 系统详细信息systeminfo # 显示详细的系统配置信息 systeminfo | find OS # 只显示操作系统相关信息 systeminfo /s remote-pc # 查看远程计算机的系统信息(需权限)这个命令会输出包括操作系统版本、安装日期、启动时间、硬件配置等详细信息。TASKLIST - 进程列表tasklist # 显示所有运行中的进程 tasklist /svc # 显示进程和服务关联 tasklist /fi status eq running # 过滤显示运行中的进程 tasklist /m dllname.dll # 显示加载了指定DLL的进程TASKKILL - 结束进程taskkill /im notepad.exe # 结束所有notepad进程 taskkill /pid 1234 /f # 强制结束PID为1234的进程 taskkill /fi windowtitle eq Untitled* # 结束标题匹配的进程警告强制结束系统进程可能导致系统不稳定请谨慎使用。VER - 系统版本ver # 显示Windows版本号WHOAMI - 当前用户信息whoami # 显示当前用户名 whoami /priv # 显示当前用户权限 whoami /groups # 显示用户所属组3.2 网络相关命令IPCONFIG - IP配置信息ipconfig # 显示基本网络配置 ipconfig /all # 显示详细网络配置 ipconfig /release # 释放IP地址(DHCP) ipconfig /renew # 重新获取IP地址(DHCP) ipconfig /flushdns # 清除DNS缓存PING - 网络连通性测试ping example.com # 测试与example.com的连接 ping 192.168.1.1 -t # 持续ping(按CtrlC停止) ping -n 10 -l 1024 target # 发送10个1024字节的包 ping -a 192.168.1.1 # 尝试解析主机名TRACERT - 路由追踪tracert example.com # 显示到目标的路由路径 tracert -d 8.8.8.8 # 不解析IP地址为主机名(加快速度) tracert -h 30 target # 设置最大跳数为30NETSTAT - 网络统计netstat -a # 显示所有连接和监听端口 netstat -b # 显示每个连接的可执行程序(需管理员权限) netstat -n # 以数字形式显示地址和端口 netstat -o # 显示每个连接的进程ID netstat -s # 显示各协议的统计信息NSLOOKUP - DNS查询nslookup example.com # 查询域名的IP地址 nslookup -typemx gmail.com # 查询MX记录 nslookup -typens microsoft.com # 查询名称服务器 nslookup # 进入交互模式3.3 系统维护命令CHKDSK - 磁盘检查chkdsk C: # 检查C盘(只读模式) chkdsk C: /f # 检查并修复错误(需重启) chkdsk /r # 定位坏扇区并恢复可读信息SFC - 系统文件检查sfc /scannow # 扫描并修复系统文件(需管理员权限) sfc /verifyonly # 只扫描不修复DISKPART - 磁盘分区管理diskpart # 进入交互式磁盘分区工具 list disk # 列出所有磁盘 select disk 0 # 选择磁盘0 list partition # 列出所选磁盘的分区注意DISKPART功能强大但也很危险错误操作可能导致数据丢失。SHUTDOWN - 关机与重启shutdown /s # 关机 shutdown /r # 重启 shutdown /l # 注销 shutdown /h # 休眠 shutdown /a # 中止关机 shutdown /s /t 60 # 60秒后关机 shutdown /r /m \\remote-pc # 重启远程计算机4. 批处理脚本与高级技巧批处理脚本(.bat或.cmd文件)是Windows中自动化任务的强大工具。了解批处理编程可以大大提高工作效率。4.1 批处理脚本基础创建批处理文件新建文本文件输入命令每行一个保存为.bat或.cmd扩展名双击运行常用批处理命令echo off # 关闭命令回显 echo Hello World # 输出文本 pause # 暂停等待按键 set varvalue # 设置变量 echo %var% # 使用变量 call other.bat # 调用另一个批处理 exit /b # 退出批处理注释与标签rem 这是注释 :: 这也是注释(更常用) :label # 定义标签 goto label # 跳转到标签4.2 变量与参数环境变量set # 显示所有环境变量 set PATH # 显示PATH变量 set MYVARvalue # 设置用户变量 echo %MYVAR% # 使用变量参数传递echo %1 %2 %3 # 显示前三个参数 shift # 移动参数(%2变为%1等)示例脚本test.bat:echo off echo 第一个参数是: %1 echo 第二个参数是: %2运行test.bat hello world会输出:第一个参数是: hello 第二个参数是: world特殊变量%0 # 批处理文件名 %* # 所有参数 %CD% # 当前目录 %DATE% # 当前日期 %TIME% # 当前时间 %RANDOM% # 随机数 %ERRORLEVEL% # 上一条命令的退出码4.3 流程控制IF条件判断if exist file.txt echo 文件存在 if not exist folder md folder if %var%value echo 匹配 if %ERRORLEVEL% neq 0 echo 上条命令失败 if defined var echo 变量已定义FOR循环for %%i in (*.txt) do echo %%i # 遍历txt文件 for /f tokens1,2 %%a in (data.txt) do echo %%a %%b # 解析文件 for /l %%i in (1,1,10) do echo %%i # 数字循环 for /d %%i in (*) do echo %%i # 遍历目录错误处理command || goto error # 命令失败时跳转 if %ERRORLEVEL% neq 0 ( echo 错误发生 exit /b 1 )4.4 实用批处理示例备份脚本echo off set backupdirD:\Backup\%DATE% if not exist %backupdir% md %backupdir% xcopy C:\Data\*.* %backupdir% /s /e /c /h /y echo 备份完成于 %TIME% pause批量重命名echo off setlocal enabledelayedexpansion set i1 for %%f in (*.jpg) do ( ren %%f photo!i!.jpg set /a i1 ) echo 重命名完成 pause系统信息报告echo off echo 系统信息报告 report.txt echo report.txt echo. report.txt date /t report.txt time /t report.txt echo. report.txt systeminfo | findstr /B /C:OS Name /C:OS Version /C:System Type report.txt echo. report.txt ipconfig | findstr IPv4 report.txt start report.txt4.5 高级技巧与注意事项延迟变量扩展在循环中修改变量需要使用延迟扩展setlocal enabledelayedexpansion set count0 for %%i in (*) do ( set /a count1 echo 文件!count!: %%i )用户输入set /p name请输入你的名字: echo 你好, %name%!临时文件set tempfile%temp%\temp_%RANDOM%.tmp echo 临时数据 %tempfile% rem 使用临时文件... del %tempfile%以管理员身份运行echo off :: 检查是否以管理员身份运行 net session nul 21 if %ERRORLEVEL% equ 0 ( echo 已经是管理员权限 ) else ( echo 请求管理员权限... powershell start-process -verb runas -filepath %~dpnx0 exit /b ) :: 这里放置需要管理员权限的命令 echo 正在执行需要管理员权限的操作... pause常见问题与解决中文乱码在批处理文件开头添加chcp 65001使用UTF-8编码路径含空格用双引号包裹路径如C:\Program Files特殊字符使用^转义如echo ^会输出长命令换行使用^作为行尾续行符隐藏命令窗口使用start /b或创建快捷方式设置最小化运行掌握这些批处理技巧可以让你自动化许多日常任务大大提高工作效率。