for基本用法
- cmd窗口: for %i in (command1) do command2
- 批处理中: for %%i in (command1) do command2
基本要素:
- or、in和do是for语句的关键字,它们三个缺一不可;
- %%I是for语句中对形式变量的引用,就算它在do后的语句中没有参与语句的执行,也是必须出现的;
- in之后,do之前的括号不能省略;
- command1和command2表示字符串、变量或命令语句;
- command1之间的元素需要用空格键, tab键, 逗号, 分号, 或等号分割;
例子:
1 | for %%i in (bbs.bathome.cn) do ( |
文本解析: for /f
基本用法
例子:
1 | rem 每次读取文本的一行数据 |
切分字符串: delims=
例子:
1 | echo ----------------------------------------- |
定点提取: tokens=
辅助delims, 用于提取具体的一段
例子:
1 | :: 默认是以空格为分割符 |
跳过无关内容, 直奔主题: skip=n
跳过n行, 从n+1行开始
例子:
1 | for /f "skip=2" %%i in (test3.txt) do echo %%i |
忽略以指定字符打头的行: eol=
例子:
1 | echo ----------------------------------------------- |
使用哪种格式?
- for /f %%i in (文件名) do (…)
- for /f %%i in (‘命令语句’) do (…)
- for /f %%i in (“字符串”) do (…)
- for /f “usebackq” %%i in (“文件名”) do (……)
- for /f “usebackq” %%i in (
命令语句
) do (……) - for /f “usebackq” %%i in (‘字符串’) do (……)
例子:
1 | echo ----------------------------------------------- |
当路径中包含特殊字符时,需要使用usebackq, 它是一个增强型参数, 使用后, command1需要变动如下:
- 如果第一个括号里的对象是一条命令语句的话,原来的单引号’要改为后引号 `
- 如果第一个括号里的对象是字符串的话,原来的双引号”要改为单引号’
- 如果第一个括号里的对象是文件名的话,要用双引号”括起来
例子:
1 | @echo off |