1. .bat中For 循环基本用法。
使用 "delims=" 指定分隔符,/f 默认是以空格或者Table 键作为分隔符
无论in后的集是哪种形式,for/f 都最终分解为字符串,按需要是否“忽略几行”(skip=)、“用什么刀来切分”(delims= )、“最多只需取哪几段”(tokens=)将集里形成的字符串,逐行地分段赋给%或%%后的变量及可能顺延扩展出的变量,以执行do后的命令,每一行即为一轮循环。
可参考链接:
https://www.jb51.net/article/93171.htm
1.1 格式
在cmd窗口中:
FOR %variable IN (set) DO command [command-parameters]
在Bat文件中:
FOR %%variable IN (set) DO command [command-parameters]
注意点:在cmd窗口中,for之后的形式变量I必须使用单百分号引用,即%i;而在批处理文件中,引用形式变量i必须使用双百分号,即%%i。
For语句的基本要素都有些什么:
1、for、in和do是for语句的关键字,它们三个缺一不可;
2、%%I是for语句中对形式变量的引用,就算它在do后的语句中没有参与语句的执行,也是必须出现的;
3、in之后,do之前的括号不能省略;
4、set 表示字符串或变量,command表示字符串、变量或命令语句;
实用举例
1.1 列出当前路径下的所有txt 文件。
for %%i in (??.txt) do echo "%%i"
2 .bat中寻找环境变量并激活keil build
@echo off
echo %PATH%
set hv=UV4.exe
echo %path% >.txt
cd. > path.txt
:s
for /f "delims=; tokens=1*" %%a in (.txt) do (
echo %%a
echo %%a >> path.txt
echo %%b > .txt
echo %%a| findstr %hv% >nul && (
echo %%a 包含%hv%
set UV=%%a
) || (
echo %%a 不包含%hv%
)
findstr ";" .txt >nul && goto s
)
del .txt /q
del path.txt /q
echo %UV%
cd /d %~dp0
cd project
echo %~dp0
::set UV=D:\Keil_v5\UV4\UV4.exe
%UV% -j0 -b aw_hal_gpio_led.uvprojx -o .\build_log.txt
type build_log.txt
echo Done.
pause
>nul可以加了 >nul 就可以不打印 echo 的内容