文章目录
-
- 前言
- [1.什么是BAT 脚本](#1.什么是BAT 脚本)
- 2.基本语法
-
- [2.1 注释](#2.1 注释)
- [2.2 基本命令执行](#2.2 基本命令执行)
- 3.常用命令详解
- 4.变量使用
-
- [1. 定义变量](#1. 定义变量)
- [2. 使用变量(要用 `%` 括起来)](#2. 使用变量(要用
%括起来))
- 5.流程控制
- 6.示例
-
- [示例 1:自动备份文件](#示例 1:自动备份文件)
- [示例 2:输入名字并欢迎](#示例 2:输入名字并欢迎)
- [示例 3:批量重命名文件](#示例 3:批量重命名文件)
- [示例 4:检测文件是否存在](#示例 4:检测文件是否存在)
- [7.小技巧 & 注意事项](#7.小技巧 & 注意事项)
-
- [错误码与返回值:errorlevel / if errorlevel ...](#错误码与返回值:errorlevel / if errorlevel ...)
- 8.总结
前言
最近在做环境检查和项目的构建打包时,发现有些麻烦,然后发现用bat脚本很方便,故总结本文,如有错误,请评论区指出
1.什么是BAT 脚本
bat 脚本是指在 Windows 操作系统上运行的批处理(Batch)脚本 ,文件扩展名通常是 .bat (也可能是 .cmd)。
它的作用是把一系列命令行指令按顺序写在一个文本文件里,然后由系统的命令解释器(cmd.exe)一次性执行,从而自动化任务。
- 文件扩展名 :
.bat(如start.bat) - 运行方式:双击运行,或在命令提示符(CMD)中输入脚本名运行。
- 解释器 :由 Windows 的
cmd.exe解释执行。 - 特点:简单、易学、适合基础自动化任务,但功能不如 PowerShell 强大。
2.基本语法
2.1 注释
使用 rem 或 :: 添加注释:
bat
rem 这是一个注释(推荐用 rem)
:: 这也是一个注释(更简洁)
2.2 基本命令执行
脚本就是一行一行执行命令:
bat
echo Hello World
dir
pause
echo:输出文本(也可关闭输出:echo off)dir:列出当前目录内容pause:暂停,等待用户按键继续
3.常用命令详解
| 命令 | 作用 | 示例 |
|---|---|---|
echo on/off |
显示/隐藏命令执行过程 | echo off |
echo |
输出文字或变量值 | echo 你好 |
set var=value |
定义变量 | set name=张三 |
set /p var=提示信息 |
读取用户输入 | set /p name=请输入名字: |
if |
条件判断 | if %age% gtr 18 echo 成年 |
for |
循环 | for %%i in (*.txt) do echo %%i |
goto label |
跳转到标签 | goto start |
:label |
定义标签 | :start |
call |
调用其他脚本 | call test.bat |
exit |
退出脚本 | exit |
cd |
进入目录 | cd D:\MyProject |
mkdir / md |
创建目录 | mkdir new_folder |
del |
删除文件 | del file.txt |
copy |
复制文件 | copy a.txt b.txt |
move |
移动文件 | move a.txt D:\backup\ |
start |
启动程序或文件 | start notepad.exe |
timeout |
等待一段时间 | timeout /t 3 |
4.变量使用
1. 定义变量
bat
set name=Tom
set age=20
2. 使用变量(要用 % 括起来)
bat
echo 你的名字是 %name%
echo 你今年 %age% 岁
注意:变量名不能包含特殊符号,命名尽量简洁。
5.流程控制
5.1 if 条件判断
基本语法:
bat
if 条件 命令
常用比较:
==:等于(字符串比较)gtr:大于(数字)lss:小于geq:大于等于leq:小于等于neq:不等于
示例:
bat
set age=18
if %age% gtr 18 (
echo 你已成年
) else (
echo 你还未成年
)
提示 :使用括号做代码块时,if 后必须加 (,且 else 要在同一行或换行后。
5.2 for 循环
遍历文件(注意 %%i):
bat
for %%i in (*.txt) do echo 文件名:%%i
在 BAT 脚本中,循环变量用
%%i,在 CMD 命令行中才用%i。
数字循环:
bat
for /l %%i in (1,1,5) do echo 第 %%i 次
1:起始值1:步长5:结束值
5.3 goto 与标签
bat
:start
echo 开始执行
set /p choice=是否继续?(y/n)
if "%choice%" == "y" goto yes
goto end
:yes
echo 正在继续...
goto end
:end
echo 完成
pause
6.示例
示例 1:自动备份文件
bat
@echo off
echo 开始备份...
xcopy "D:\文档" "D:\备份\文档" /s /i
echo 备份完成!
pause
示例 2:输入名字并欢迎
bat
@echo off
set /p name=请输入你的名字:
echo 欢迎你,%name%!
pause
示例 3:批量重命名文件
bat
@echo off
for %%i in (*.jpg) do (
ren "%%i" "photo_%%i"
)
echo 批量重命名完成!
pause
示例 4:检测文件是否存在
bat
if exist "config.txt" (
echo 配置文件存在
) else (
echo 配置文件不存在!
)
7.小技巧 & 注意事项
- 添加
@echo off在脚本第一行:隐藏命令显示,让输出更整洁。 - 变量用
%变量名%,不能用variable。 - for 循环中变量用
%%i,不是%i。 - 字符串比较必须加引号 :
if "%var%" == "yes",避免空值出错。 - 路径中含空格时,用引号包裹 :
"C:\Program Files\app.exe" - 保存时编码为 ANSI 或 UTF-8(带 BOM),避免乱码。
错误码与返回值:errorlevel / if errorlevel ...
做环境检查、构建打包时非常常用:某个命令失败了就停止流程。
bat
command_here
if errorlevel 1 echo 命令失败
或:
bat
command_here
if %errorlevel% neq 0 exit /b %errorlevel%
exit /b 常用于返回到上一级脚本。
8.总结
- 以
.bat为扩展名 - 用
@echo off开始整洁输出 - 变量用
%var%,定义用set var=value - 用
if条件、for循环、goto跳转实现逻辑 - 常用命令:
echo,set,copy,del,start,cd,pause,timeout - 适合:文件批量处理、自动运行程序、简单自动化任务