文章目录
一、什么是批处理脚本?
Windows批处理脚本(.bat)是基于CMD命令解释器的自动化脚本,通过将多个DOS命令按逻辑组合成文本文件(扩展名为.bat或.cmd),实现自动化操作。它常用于:
- 批量文件处理
- 系统维护任务
- 软件自动安装
- 定时任务调度
优势:无需额外环境、执行快速、学习成本低
二、开发环境准备
- 新建文本文件,重命名为
demo.bat
- 推荐编辑器:
- Notepad++
- VS Code(安装Batch插件)
- Sublime Text
三、基础语法详解
1. 基本结构
@echo off
REM 这是注释
echo Hello World!
pause
@echo off
:关闭命令回显REM
或::
:添加注释pause
:暂停等待按键
2. 变量操作
set var=CSDN
set /a num=1+2
echo %var% %num%
注意:
- 变量赋值等号两边不能有空格
- 数学运算需使用
/a
参数
3. 流程控制
if条件判断
if exist "test.txt" (
echo 文件存在
) else (
echo 文件不存在
)
for循环
for %%i in (*.txt) do (
echo 正在处理:%%i
)
4. 函数定义
call :sayHello "程序员"
exit /b
:sayHello
echo Hello %~1!
goto :eof
四、实战案例
案例1:自动备份工具
@echo off
set backup_dir=D:\Backup_%date:~0,4%%date:~5,2%%date:~8,2%
if not exist "%backup_dir%" mkdir "%backup_dir%"
xcopy C:\重要资料\* %backup_dir% /s /e /h
echo 备份完成!备份位置:%backup_dir%
pause
案例2:批量重命名工具
@echo off
setlocal enabledelayedexpansion
set count=1
for %%f in (*.jpg) do (
ren "%%f" "vacation_!count!.jpg"
set /a count+=1
)
echo 已重命名%count%个文件
pause
案例3:智能系统清理工具
@echo off
title 系统清理大师
color 0A
echo 正在清理临时文件...
del /f /s /q %temp%\*.*
del /f /q C:\Windows\Prefetch\*.*
echo 正在清理回收站...
rd /s /q %systemdrive%\$Recycle.Bin
echo 正在清理浏览器缓存...
del /f /s /q "%userprofile%\AppData\Local\Google\Chrome\User Data\Default\Cache\*.*"
echo 清理完成!释放空间统计:
dir %temp% /s | find "File(s)"
pause
案例4:网络诊断工具包
@echo off
set servers=www.baidu.com 8.8.8.8 192.168.1.1
:menu
cls
echo [1] 网络连通性测试
echo [2] 路由追踪
echo [3] 查看本机IP
echo [4] 退出
set /p choice=请选择操作:
if "%choice%"=="1" goto pingtest
if "%choice%"=="2" goto traceroute
if "%choice%"=="3" goto showip
if "%choice%"=="4" exit
:pingtest
for %%s in (%servers%) do (
echo 正在ping %%s ...
ping -n 2 %%s
)
pause
goto menu
:traceroute
set /p target=输入追踪地址:
tracert %target%
pause
goto menu
:showip
ipconfig | findstr IPv4
pause
goto menu
案例5:自动化办公助手
@echo off
setlocal enabledelayedexpansion
echo 正在生成日报...
set reportname=日报_%date:~0,4%%date:~5,2%%date:~8,2%.docx
echo 统计文件数量...
dir /b D:\项目资料\*.xlsx > filelist.txt
set count=0
for /f %%i in (filelist.txt) do set /a count+=1
echo 创建日报文档...
echo 日期:%date% %time% > %reportname%
echo 处理文件数量:%count% >> %reportname%
type report_template.txt >> %reportname%
start winword.exe %reportname%
del filelist.txt
echo 日报生成完成!
案例6:智能定时关机程序
@echo off
choice /t 30 /d y /n >nul
if errorlevel 2 (
echo 用户取消关机
pause
exit
)
echo 系统将在30分钟后关机...
shutdown -s -t 1800 -c "自动关机程序已启动"
:countdown
for /l %%i in (1800,-10,0) do (
set /a minutes=%%i/60
set /a seconds=%%i%%60
title 剩余时间:!minutes!分!seconds!秒
timeout /t 10 >nul
)
案例7:安全监控脚本
@echo off
set logfile=SystemMonitor_%date:~0,4%%date:~5,2%%date:~8,2%.log
:monitor
cls
echo 实时监控(每60秒刷新) >> %logfile%
echo [%time%] 系统状态: >> %logfile%
tasklist | findstr /i "chrome.exe" >> %logfile%
wmic cpu get loadpercentage | findstr /v "LoadPercentage" >> %logfile%
netstat -ano | findstr :80 >> %logfile%
echo --------------------------------- >> %logfile%
timeout /t 60 >nul
goto monitor
案例8:智能软件安装器
@echo off
set software=Notepad++ VSCode WinRAR
echo 正在初始化安装环境...
mkdir C:\AutoInstall 2>nul
:download
for %%s in (%software%) do (
if not exist "C:\AutoInstall\%%s.exe" (
echo 正在下载%%s...
curl -o "C:\AutoInstall\%%s.exe" "https://install.server/%%s_latest.exe"
)
)
:install
start /wait C:\AutoInstall\Notepad++.exe /S
start /wait C:\AutoInstall\VSCode.exe /silent
start /wait C:\AutoInstall\WinRAR.exe /s
echo 所有软件安装完成!
del /q C:\AutoInstall\*.exe
案例说明
案例名称 | 技术要点 | 应用场景 |
---|---|---|
系统清理工具 | 多目录操作、系统路径变量 | 定期维护 |
网络诊断工具包 | 交互式菜单、网络命令组合 | 故障排查 |
自动化办公助手 | 文件统计、文档自动生成 | 日常办公 |
智能定时关机 | 倒计时显示、异常中断处理 | 能耗管理 |
安全监控脚本 | 实时日志记录、系统资源监控 | 服务器维护 |
软件安装器 | 静默安装参数、自动化下载 | 批量部署 |
注意事项:
- 涉及系统操作时建议先测试
- 定时关机案例中的
choice
命令需Win7+系统支持 - 下载脚本需配置正确的下载链接
- 监控脚本建议使用管理员权限运行
五、调试技巧
- 使用
echo
输出中间变量 - 添加
pause
定位错误位置 - 在CMD中直接运行命令测试
- 使用
@echo on
查看执行过程
六、进阶学习建议
- 掌握
findstr
文本搜索 - 学习
reg
操作注册表 - 研究
wmic
系统信息查询 - 了解
taskkill
进程管理
七、注意事项
- 中文乱码问题:保存文件时使用ANSI编码
- 权限问题:右键选择"以管理员身份运行"
- 路径处理:使用双引号包裹含空格的路径
- 变量延迟扩展:使用
!var!
代替%var%