六维教程

Bat脚本 流程控制

条件判断 if

字符串比较

@echo off
set input=admin

if "%input%"=="admin" (
    echo 欢迎管理员!
) else (
    echo 普通用户
)

注意:用双引号包围变量和比较值,可防止变量为空时语法错误。

忽略大小写比较 /i

@echo off
if /i "ABC"=="abc" (
    echo 忽略大小写,相等!
)

数值比较

操作符 含义
equ 等于(==)
neq 不等于
lss 小于
leq 小于等于
gtr 大于
geq 大于等于
@echo off
set score=85

if %score% geq 60 (
    echo 及格
) else (
    echo 不及格
)

注意:只有 == 可以使用符号,其他操作符只能使用英文简写。

判断文件/目录是否存在 exist

@echo off
if exist "C:\Windows\notepad.exe" (
    echo 记事本存在
) else (
    echo 记事本不存在
)

if not exist "C:\Backup" (
    mkdir C:\Backup
    echo 已创建 Backup 目录
)

判断变量是否已定义 defined

@echo off
if defined MYVAR (
    echo MYVAR 已定义,值为 %MYVAR%
) else (
    echo MYVAR 未定义
)

注意if defined 中变量名不加 %

多分支 else if

@echo off
set /p score=请输入分数:

if %score% geq 90 (
    echo 优秀
) else if %score% geq 80 (
    echo 良好
) else if %score% geq 60 (
    echo 及格
) else (
    echo 不及格
)

跳转 goto

goto 命令将执行流程跳转到指定的标签位置。

@echo off
echo 开始执行

goto :skip
echo 这行不会被执行

:skip
echo 跳转到了 skip 标签
pause

循环 for

for 循环是批处理中最强大的工具之一,用于遍历文件、目录、数字序列和文本数据。

基本语法

for %%变in (集合) do 命令

重要:在 .bat 脚本中使用 双百分号 %%i,在命令行中直接运行时使用 单百分号 %i

遍历文件

@echo off
:: 列出当前目录下所有 .txt 文件
for %%f in (*.txt) do (
    echo 找到文件:%%f
)

数字循环 for /L

@echo off
:: 从 110,步长为 1
for /L %%i in (1,1,10) do (
    echo 数字:%%i
)

:: 从 101,步长为 -1
for /L %%i in (10,-1,1) do (
    echo 倒数:%%i
)

语法:for /L %%变量 in (起始,步长,结束) do 命令

遍历目录 for /D

@echo off
:: 遍历当前目录下的所有子目录
for /d %%d in (*) do (
    echo 子目录:%%d
)

递归遍历子目录 for /R

@echo off
:: 递归遍历当前目录及所有子目录下的 .txt 文件
for /r %%f in (*.txt) do (
    echo 找到:%%f
)

解析文本/命令输出 for /F

for /F 用于解析文件内容、字符串或命令输出。

@echo off
:: 解析命令输出(dir /b 列出所有文件名)
for /f "tokens=*" %%a in ('dir /b') do (
    echo 文件名:%%a
)

:: 解析字符串(按分隔符拆分)
set str=苹果,香蕉,橘子
for /f "tokens=1,2,3 delims=," %%a in ("%str%") do (
    echo 水果1%%a
    echo 水果2%%b
    echo 水果3%%c
)

:: 从文件读取每一行
for /f "usebackq tokens=*" %%a in ("data.txt") do (
    echo 行内容:%%a
)

for /F 常用选项

选项 说明
tokens= 指定提取第几个字段(如 tokens=1,3tokens=*
delims= 指定分隔符(默认是空格和制表符)
skip= 跳过前 N 行
usebackq 允许使用双引号引用文件名
上一篇
Bat脚本 变量
下一篇
Bat脚本 函数与子程序