批处理for命令的用法_批处理for命令详解

发布时间:2025-12-09 14:09:51 浏览次数:18

for /? 1.对一组文件中的每一个文件执行某个特定命令。
for %variable in (set) do command [command-parameters] for %%variable in (set) do command[command-parameters] %variable 指定一个单一字母可替换的参数。 set 表示字符串或变量,当表示多个变量时,中间可以, 空格等隔开 注:变量可以用通配符?* command 表示字符串、变量或命令语句 command-parameters 为特定命令指定参数或命令行开关。 在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 下面实例皆以批处理脚本中为准 变量名称是区分大小写的 for循环: for 语句依次提取set中的每一个元素,把它赋值给%%variable, 然后把它发给do后的command 中参与命令的执行,并且每次只提取一个元素 类似于常见编程语言的循环 例如批处理中 @echo off for %%i in (1,2,3) do echo %%i pause>nul 就会依次把1,2,3赋值给i 结果输出 1 2 3
for 后 可以 加/d /f /r /l 这四个 参数 1.for/d
set中为目录名或者文件名 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。 例如 @echo off for /d %%i in (3*) do echo %%i pause>nul 结果就是显示当前路径的所有3开头的文件夹
————————————-分割线————————————–
2.for /f 用于文本解析,提取文本信息 for /f 是以行为单位处理文本文件的,每次赋值给参数%%i一行 例如 有123.txt内容如下 1111111111 222222222 333333333 @echo off for /f %%i in (123.txt) do echo %%i&pause pause>nul 结果是 111111111 请按任意键继续. . . 222222222 请按任意键继续. . . 333333333 请按任意键继续. . .
如何提取一行文字指定符号前的内容那 1) delims 在批处理中,指定分隔符号的方法是:添加一个如 “delims=符号列表” 的开关,这样,被处理的每行字符串都会被符号列表中罗列出来的符号切分开来。 这个符号列表可以一次指定很多符号 像这样 for /f “delims=,.” %%i in (123.txt) do echo %%i pause>nul 他就会把每一行第一个,或第一个.之前的内容都提取出来了 把符号隔开的内容分为节
2) 定点提取:tokens= tokens= 后面一般跟的是数字,如 tokens=2,也可以跟多个,但是每个数字 之间用逗号分隔,如 tokens=4,7,9 含义是提取第2节字符串节和提取4,7,9三节 节是由我们对delims= 这个开关的定义来划分的
实例: @echo off for /f “delims=, tokens=3” %%i in (123.txt) do echo %%i pause>nul 这样就把以,为节 每一行的第三节输出了
提取多个节 如果 tokens= 后面指定了多个数字,如果形式变量为%%i,那么,第一个 数字指代的内容用第一个形式变量%%i 来接收,第二个数字指代的内容用第二 个形式变量%%j 来接收,第三个数字指代的内容用第三个形式变量%%k 来接 收„„第N 个数字指代的内容用第N 个形式变量来接收,其中,形式变量遵循 字母的排序,第 N 个形式变量具体是什么符号,由第一个形式变量来决定:如 果第一个形式变量是%%i,那么,第二个形式变量就是%%j;如果第一个形式 变量用的是%%x,那么,第二个形式变量就是%%y。
@echo off for /f “delims=, tokens=2,5” %%i in (test.txt) do echo %%i %%j pause>nul 这样子,就把每行以,为节的2,5两节提取出了
多个节 tokens=1,2,3,4,5 可以简写为 tokens=1-5 。 还可以把这个表达式写得更复杂一点:tokens=1,2-5 或tokens=1-3,4,5 以及tokens=1-4,5 等等
*号的表达 tokens=后面所接的星号表示:字符串从左往右被切分成紧跟在* 之前的数值所表示的节数之后,字符串的其余部分保持不变,整体被*所表示的 一个变量接收。 @echo off for /f “delims=, tokens=1,*” %%i in (123.txt) do echo %%i %%j pause
就是把第一节 输出 以及第一节之后的所有节作为一个节用%%j来输出
3) 条转行 skip=n
for /f 允许你跳 过这些无用的行,直接从第N+1 行开始处理,这个时候,就需要使用参数 skip=n, 其中,n 是一个正整数,表示要跳过的行数。
@echo off for /f “skip=2” %%i in (123.txt) do echo %%i pause 这段代码将跳过头两行内容,从第3 行起显示test.txt 中的信息。
4)忽略以指定字符打头的行:eol=
@echo off for /f “eol=,” %%i in (test.txt) do echo %%i pause 结果是以,打头的行没有显示出来。 eol只能有一个符号
如果 123.txt 中有以分号打头的行,那么,这些行 在代码[code14]的执行结果中将凭空消失。 for /f 语句是默认忽略以分号打头的行内容的,正如它默认以空格键 或跳格键作为字符串的切分字符一样。
如果要取消这个默认设置,可选择的办法是: 1、为eol=指定另外一个字符; 2、使用 for /f “eol=” 语句,也就是说,强制指定字符为空

for /f %%i in („„) do („„) 语句有好几种变形语句,不同之处在于第一个 括号里的内容:有的是用单引号括起来,有的是用双引号包住,有的不用任何符 号包裹,具体格式为:
1、for /f %%i in (文件名) do („„) 2、for /f %%i in (‘命令语句’) do („„) 3、for /f %%i in (“字符串”) do („„)
下面是usebackq增强型参数 不常用 4、for /f “usebackq” %%i in (“文件名”) do („„) 5、for /f “usebackq” %%i in (`命令语句`) do („„) 6、for /f “usebackq” %%i in (‘字符串’) do („„)

1、
当你希望读取文本文件中的内容的话,第一个括号中不用任何符号包裹, 应该使用的是第1 条语句;例如:你想显示test.txt 中的内容,那么,就使用
for /f %%i in (123.txt) do echo %%i;
2、
当你读取的是命令语句执行结果中的内容的话,第一个括号中的命令语 句必须使用单引号包裹,应该使用的是第2 条语句;例如:你想显示当前目录下 文件名中含有test 字符串的文本文件的时候,应该使用
for /f %%i in (‘dir /a-d /b *test*.txt’) do echo %%i 这样的语句;
3、当你要处理的是一个字符串的时候,第一个括号中的内容必须用双引号 括起来,应该是用的是第 3 条语句;例如:当你想把 bbs.bathome.cn 这串字符 中的点号换为短横线并显示出来的话,可以使用 for /f “delims=. tokens=1-3″ %%i in (”
http://blog.csdn.net/Turbo_J“) do echo %%i-%%j-%%k 这样的语 句。 很显然,第一个括号里是否需要用符号包裹起来,以及使用什么样的符号包 裹,取决于要处理的对象属于什么类型:如果是文件,则无需包裹;如果是命令 语句,则用单引号包裹;如果是字符串,则使用双引号括起来。

usebackq 是一个增强型参数,当使用了这个参数之后,原来的for 语句中第一个括号内的写法要做如下变动:如果第一个括号里的对象是一条命 令语句的话,原来的单引号’要改为后引号`;如果第一个括号里的对象是字符串 的话,原来的双引号”要改为单引号’;如果第一个括号里的对象是文件名的话, 要用双引号”括起来。
当路径中含有特殊字符的时候比如空格和& 用usebackq 增强型参数 如 不常见 @echo off for /f “usebackq” %%i in (“qwe 1.txt”) do echo %%i pause>nul
————————————-分割线————————————–
3.for/r   进入根目录树[Drive:]Path,在树的每个目录中执行for语句。如果在/R后没有指定目录,则认为是
当前目录。如果Set只是一个句点(.),则只枚举目录树 for /r [[drive:]path] %%variable in (set) do command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的for语句。 如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符, 则枚举该目录树。 tips: for /r c:\123 %%f IN (456.txt) Do del %%f 结果 即是在c:\123 路径下删除456.txt文件
————————————-分割线————————————–
4.FOR /L FOR /L %%variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列 1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1) 这个就和常见编程语言一致了
例如 @echo off for /l %%i in (1,1,5) do echo %%i pause>nul 结果 1 2 3 4 5


for循环跳出 简单的可以通过exit来实现或者pause暂停 goto break
:break exit /b



需要做网站?需要网络推广?欢迎咨询客户经理 13272073477