本篇主要介绍以下功能:
- 定义字符串变量
- 定义整数变量
- 不打印本条命令的回显
- 设置延迟变量
- 字符串切割
- 循环处理
- if 判断
- 执行脚本
- 异常退出程序
实例演示:
rem rem开头表示这行是注释
rem @echo off表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显
@echo off
rem 定义字符串变量
set GRAPHICS_CARD_TYPE=wangzhe,lianmeng,huoxian
rem 打印字符串变量
echo 'GRAPHICS_CARD_TYPE:'%GRAPHICS_CARD_TYPE%
rem 设置本地为延迟扩展。其实也就是:延迟变量
setlocal enabledelayedexpansion
set string=%GRAPHICS_CARD_TYPE%
rem :split 表示自定义的循环体,表示split循环开始
rem tokens=1,*表示字符串切割后的第一个元素1和其他,delims=,表示字符串按,分割
rem %%i 表示循环后获得的第一个元素,变量要用双引号+左右百分号表示
:split
for /f "tokens=1,* delims=," %%i in ("%string%") do (
echo %%i
set string=%%j
rem 定义一个整数变量
set /a count=0
set /a maxnum=5
rem :loop 表示自定义的循环体,表示loop循环开始
:loop
rem 执行内嵌bat脚本
call 1_git_clone.bat
rem %errorlevel% 表示上述命令执行结果,执行异常返回0
if %errorlevel% neq 0 (
echo %errorlevel%
set /a count=%count%+1
echo %count%
rem 变量要用双引号+左右百分号表示
rem LEQ表示小于
if "%count%" LEQ "%maxnum%" (
echo %count%
echo Error occured. Retry count %count%.
rem 设置sleep 等待时间
TIMEOUT /T 30
rem 返回loop循环体开始阶段
goto loop
) else (
echo Maximum retry exceeded.
rem exit 表示异常退出程序
exit /b %errorlevel%
)
)
echo %%i
)
if not "%string%"=="" (
rem 返回split循环体开始阶段
goto split
)