Windows系统原生脚本语言--Batch语言

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习

🎬擅长领域:驱动开发,嵌入式软件开发,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

八、最佳实践

  1. 始终以@echo off开头 - 避免显示执行的命令
  2. 使用注释 - 说明脚本功能
  3. 错误检查 - 检查关键命令的执行结果
  4. 使用变量 - 提高可维护性
  5. 提供帮助 - 使用/?, /help参数显示用法
  6. 退出代码 - 使用exit /b 代码返回适当的退出码
  7. 路径处理 - 使用引号处理含空格的路径
  8. 权限检查 - 需要管理员权限时进行验证

九、调试技巧

batch 复制代码
REM 启用命令回显
echo on

REM 在关键点暂停
pause

REM 显示变量值
set 变量名

REM 使用echo调试
echo [DEBUG] 当前目录:%CD%
echo [DEBUG] 参数1:%1

REM 记录执行过程
开始命令 > debug.log 2>&1

这些是Windows批处理脚本的基础知识和常用命令。实际应用中可以根据需求组合使用这些命令,创建强大的自动化脚本。

相关推荐
сокол2 小时前
【网安-Web渗透测试-内网渗透】域环境权限维持
服务器·windows·网络安全·系统安全
玖釉-3 小时前
栈——栈的定义及基本操作
c++·windows·算法·图形渲染
取经蜗牛4 小时前
Windows 11 WSL + Ubuntu 24.04 安装指南
linux·windows·ubuntu
大树学长4 小时前
【QT开发】Windows 10 + Qt 5.15.2 手动编译安装 Qt OPC UA 模块完整记录
开发语言·windows·qt
idolao5 小时前
Autodesk VRED Professional 2025安装教程 Windows版:自定义路径+Keygen指南
windows
hwscom5 小时前
Windows服务器如何免费实现文件防篡改功能
运维·服务器·windows
Philtell6 小时前
在 VSCode 调试时,有多种方法可以查看和打印变量的内容
windows
谪星·阿凯6 小时前
第三方应用软件提权全解析
windows·网络安全
x***r1517 小时前
dotnet-hosting-2.2.8-win安装步骤详解(附IIS部署与AspNetCoreModule配置)
windows
JOJO___8 小时前
【2026】记录在windows编译llama.cpp步骤,AMD CPU本地部署千问3.5本地大模型,内存占用低
windows·cpu·amd·llama.cpp·llama.cpp编译·千问3.5·本地大语言模型