🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习
🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发
❄️作者主页:一个平凡而乐于分享的小比特的个人主页
✨收录专栏:自动化脚本语言,本专栏专门讲述一些常用的自动化脚本语言,以方便日常开发
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

Windows系统原生脚本语言--Batch语言
一、基础概念
1. 文件类型
- .bat (Batch File):DOS时代延续至今
- .cmd (Command File):Windows NT及以后,功能更强大
2. 创建与执行
batch
@echo off
REM 这是一个批处理注释
echo Hello World!
pause
二、基本语法结构
1. 注释
bash
REM 这是注释
:: 这也是注释(实际是无效标签)
2. 关闭/开启命令回显
batch
@echo off // 关闭当前命令回显
echo on // 开启命令回显
echo 消息内容 // 显示消息
3. 变量使用
batch
SET 变量名=值 // 设置变量
SET 变量名 // 显示变量值
%变量名% // 使用变量
三、常用命令详解
1. 文件和目录操作
batch
DIR // 列出目录内容
CD /D 路径 // 切换目录(/D可跨驱动器)
MD 目录名 // 创建目录
RD /S /Q 目录名 // 删除目录(/S包含子目录,/Q安静模式)
DEL /F /Q 文件名 // 删除文件
COPY 源 目标 // 复制文件
XCOPY 源 目标 /E /I /Y // 高级复制(/E包含空目录,/I目标为目录,/Y覆盖确认)
MOVE 源 目标 // 移动文件/目录
REN 原名 新名 // 重命名
2. 文本文件操作
batch
TYPE 文件名 // 显示文件内容
ECHO 内容>文件名 // 创建/覆盖文件
ECHO 内容>>文件名 // 追加到文件
FIND "字符串" 文件名 // 查找字符串
FINDSTR "正则" 文件名 // 正则表达式查找
SORT 文件名 // 排序文件内容
MORE 文件名 // 分页显示
3. 系统管理
batch
TASKLIST // 显示进程列表
TASKKILL /PID 进程ID /F // 结束进程
SHUTDOWN /S /T 0 // 关机
SHUTDOWN /R /T 0 // 重启
REG 命令 // 注册表操作
SCHTASKS // 计划任务管理
4. 网络相关
batch
PING 地址 // 网络连通性测试
IPCONFIG /ALL // 显示网络配置
NET USE // 网络共享连接
NETSTAT -AN // 显示网络连接状态
TRACERT 地址 // 路由追踪
5. 环境控制
batch
SETX 变量名 值 // 永久设置环境变量
PATH // 显示/设置路径
PROMPT $P$G // 设置提示符
CLS // 清屏
COLOR 背景前景 // 设置控制台颜色(如 COLOR 0A)
TITLE 标题 // 设置窗口标题
四、控制结构
1. 条件判断(IF)
batch
IF [NOT] ERRORLEVEL 数值 命令
IF [NOT] 字符串1==字符串2 命令
IF [NOT] EXIST 文件名 命令
IF DEFINED 变量名 命令
REM 示例:
IF %ERRORLEVEL% NEQ 0 (
echo 执行失败
) ELSE (
echo 执行成功
)
2. 循环(FOR)
batch
REM 基本循环
FOR %%变量 IN (集合) DO 命令
REM 数字范围循环
FOR /L %%i IN (起始,步长,结束) DO echo %%i
REM 文件遍历
FOR /R 目录 %%i IN (*.txt) DO echo %%i
REM 解析文本
FOR /F "选项" %%i IN (文件) DO echo %%i
FOR /F "delims= tokens=1,2" %%i IN ('命令') DO echo %%i %%j
3. 跳转(GOTO)
batch
@echo off
GOTO START
:ERROR_HANDLER
echo 发生错误
exit /b 1
:START
REM 主程序逻辑
IF ERRORLEVEL 1 GOTO ERROR_HANDLER
4. 调用(CALL)
batch
REM 调用另一个批处理
CALL 其他脚本.bat
REM 调用标签段
CALL :函数名 参数1 参数2
:函数名
echo 参数1=%1, 参数2=%2
exit /b 0
五、特殊变量和参数
1. 位置参数
batch
%0 脚本自身名称
%1-%9 命令行参数
%* 所有参数
REM 示例:myscript.bat arg1 arg2
echo 脚本名:%0
echo 第一个参数:%1
echo 所有参数:%*
2. 环境变量
batch
%CD% 当前目录
%DATE% 当前日期
%TIME% 当前时间
%RANDOM% 随机数
%ERRORLEVEL% 上一条命令退出码
%COMPUTERNAME% 计算机名
%USERNAME% 当前用户名
%OS% 操作系统
%PATH% 可执行文件搜索路径
六、实用技巧
1. 错误处理
batch
REM 检查命令执行结果
命令
IF %ERRORLEVEL% NEQ 0 (
echo 错误代码:%ERRORLEVEL%
exit /b %ERRORLEVEL%
)
REM 忽略错误继续执行
命令 || echo 命令失败,继续执行...
2. 用户交互
batch
REM 获取用户输入
SET /P 变量=提示信息:
REM 选择菜单
echo 1. 选项一
echo 2. 选项二
SET /P choice=请选择:
IF "%choice%"=="1" GOTO OPTION1
IF "%choice%"=="2" GOTO OPTION2
3. 日志记录
batch
@echo off
SET LOGFILE=script_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log
REM 同时输出到屏幕和日志
命令 | tee -a "%LOGFILE%"
REM 或者
(
echo 开始时间:%TIME%
命令1
命令2
echo 结束时间:%TIME%
) >> "%LOGFILE%" 2>&1
七、完整示例
1. 备份脚本
batch
@echo off
TITLE 文件备份工具
COLOR 0A
REM 设置变量
SET SOURCE_DIR=C:\重要文件
SET BACKUP_DIR=D:\备份
SET DATE_STR=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
SET BACKUP_NAME=备份_%DATE_STR%.zip
REM 检查目录
IF NOT EXIST "%SOURCE_DIR%" (
echo 错误:源目录不存在!
pause
exit /b 1
)
MD "%BACKUP_DIR%" 2>nul
REM 创建备份
echo 正在备份 %SOURCE_DIR%...
"C:\Program Files\7-Zip\7z.exe" a -tzip "%BACKUP_DIR%\%BACKUP_NAME%" "%SOURCE_DIR%\*"
IF %ERRORLEVEL% EQU 0 (
echo 备份成功:%BACKUP_NAME%
) ELSE (
echo 备份失败!
)
pause
2. 系统清理脚本
batch
@echo off
TITLE 系统清理工具
COLOR 0C
echo 正在清理临时文件...
DEL /F /Q /S "%TEMP%\*.*"
DEL /F /Q /S "C:\Windows\Temp\*.*"
echo 正在清理回收站...
RD /S /Q C:\$Recycle.Bin 2>nul
echo 正在清理预读取文件...
DEL /F /Q /S C:\Windows\Prefetch\*.*
echo 清理完成!
timeout /t 3
八、最佳实践
- 始终以
@echo off开头 - 避免显示执行的命令 - 使用注释 - 说明脚本功能
- 错误检查 - 检查关键命令的执行结果
- 使用变量 - 提高可维护性
- 提供帮助 - 使用
/?, /help参数显示用法 - 退出代码 - 使用
exit /b 代码返回适当的退出码 - 路径处理 - 使用引号处理含空格的路径
- 权限检查 - 需要管理员权限时进行验证
九、调试技巧
batch
REM 启用命令回显
echo on
REM 在关键点暂停
pause
REM 显示变量值
set 变量名
REM 使用echo调试
echo [DEBUG] 当前目录:%CD%
echo [DEBUG] 参数1:%1
REM 记录执行过程
开始命令 > debug.log 2>&1
这些是Windows批处理脚本的基础知识和常用命令。实际应用中可以根据需求组合使用这些命令,创建强大的自动化脚本。