批处理for循环秒用

合集下载

bat文件中for用法

bat文件中for用法

bat文件中for用法在批处理(batch)文件中,`for` 命令用于循环处理一系列文件或文本行。

下面是 `for` 命令的一些基本用法和示例:1. 基本的 `for` 循环:```batchecho offfor %%i in (1 2 3 4 5) do (echo %%i)```2. 使用 `do` 命令:```batchecho offfor %%i in (1 2 3 4 5) do (echo This is loop %%i)```3. 使用 `in` 命令中的文件:```batchecho offfor %%i in ( ) do (echo %%i has %%~zi bytes )```4. 遍历文件中的每一行:```batchecho offfor /f "tokens=" %%i in () do ( echo %%i)```5. 使用 `delims` 设置分隔符:在处理文本文件时,你可以设置分隔符,以便按特定的格式解析每一行。

例如,假设有一个以逗号分隔的文本文件:```batchecho offfor /f "tokens=1,2 delims=," %%i in () do (echo Column1: %%i, Column2: %%j)```6. 结合 `if` 命令:你还可以在 `for` 循环内部使用 `if` 命令进行条件判断:```batchecho offfor %%i in (1 2 3 4 5) do (if %%i lss 3 (echo Less than 3) else (echo More than or equal to 3))```7. 跳过循环的迭代:可以使用 `continue` 和 `break` 来控制循环的行为:```batchecho offfor %%i in (1 2 3 4 5) do (if %%i == 3 (continue) else (echo %%i))```8. 使用 `set` 命令修改变量:在循环内部,你可以使用 `set` 命令来修改变量的值:```batchecho offsetlocal enabledelayedexpansionfor %%i in (1 2 3 4 5) do (set /a "count+=1"echo Loop count: !count! - %%i)```以上是 `for` 命令的一些基本用法和示例。

批处理FOR命令详解-就是这里-51CTO技术博客

批处理FOR命令详解-就是这里-51CTO技术博客

批处理FOR命令详解-就是这里-51CTO技术博客批处理FOR命令详解 2009-06-03 18:16:48标签:批处理 for对所有的批处理初学者来说,for的应用是最难理解以及掌握的。

本文由浅入深,为大家专门讲解for的用法,希望大家喜欢。

首先应该明确的是,for不是一个简单的命令,它的用法比较复杂,它还可以带四个参数(/L /D /R /F),其中:/L和/F参数是最经常用到的。

当然,它本身也可以不带参数,下面我们通过具体的例子来讲解for的运用。

一、不带参数的for:将以上代码保存为批处理文件(如何保存?),然后运行,可以发现屏幕上显示1 2 3 4 5(每字一行)是不是明白了一些?它的整个运行机制我们可以这样看:for不停的从括号中拿出5个“东西”来(以空格做间隔),并将这5个“东西”依次传给临时变量%%i,同时把这个变量echo出来....从这个例子我们可以看出,for的基本用法是:for 变量 in (目标) do 干什么?变量常用%%i 来表示,当然也可以换成%%j;目标就是待处理的对象集合,比如这里的1 2 3 4 5;这里的干什么的内容为:批处理命令。

【相关习题:】将你的名字用for命令分三行显示出来二、带参数 /L 的for (这里的参数/L 可以理解为 "list" 的意思,代表一个数列)先看测试代码:复制内容到剪贴板代码:显示结果也为:1 2 3 4 5(每字一行)它的意思和上面的意思差不多,但是括号中的对象却不需要写成1 2 3 4 5 的形式了,而是:1 1 5,因为它启用了参数 /L ,就是告诉for,这个括号里的对象是个数列,怎样的数列?就是以 1 开始,步长为1 ,结束值为5的一个等差数列,再举个实例:复制内容到剪贴板代码:::显示从 10 - 20 的所有偶数:【相关习题:】显示 1~20 间能被5整除的整数三、带参数 /f 的for(这里的参数/F可以理解为“file”的意思,代码处理对象为文本串)参考教程:for 命令 /f 参数通俗讲解四、for的 /D 和/R 参数(这两个参数个人比较少用)1>/D参数(常用来查询当前目录或者指定目录的文件夹)基本用法:FOR /D %variable IN (set) DO command [command-parameters]如:查询F盘根目录下的文件夹复制内容到剪贴板代码:夹假设本批处理文件保存在:F:\test下运行以下批处理代码,将会查询 F:\test下的文件夹复制内容到剪贴板代码:/r参数基本用法:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]检查以[drive:]path 为根的目录树中,所有符合(set)的文件或者文件夹。

DOS批处理命令For循环命令详解

DOS批处理命令For循环命令详解

DOS批处理命令For循环命令详解for命令是⼀种对⼀系列对象依次循环执⾏同⼀个或多个命令的在命令⾏或批处理中运⾏的命令,结合⼀些Windows管理中的程序后,其处理功能强⼤、应⽤灵活⽅便程度令⼈刮⽬相看。

但是,其帮助信息也因此复杂往往令初学者望⽽⽣畏,这⾥根据本⼈的学习理解,把其⽤法分解简化,疏忽和错误也许在所难免。

基本格式(这⾥写的是在命令⾏⾥⽤的格式,如果是在批处理中,需要把其中%再多加个%形成%%):for /参数 %变量 in (集) do 命令(注:上⾯除中⽂的以外,其余的是按它的格式要求书写的,⼤⼩写都⾏)参数:FOR分四种参数 D L R F,并且有的参数还可附加另外的选项下⾯会分别介绍变量:(记住如果是在批处理中使⽤for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分⼤⼩写(原帮助是这么说的,实际运⽤中⽤单个数字作为变量名试过证明也可⾏),如%B和%b代表的是不同的变量。

FOR命令会在每次循环中,把in (集)中读取到的值赋于这个变量,以便其后的命令中引⽤。

集:由系列⽂件、字符串或由命令产⽣的内容形成的集合(当然可⽤通配符 * ?,还可引⽤环境变量),FOR命令是按⼀定顺序和规律分次读取集中内容,赋值给变量,并执⾏do后的命令,进⾏循环下⼀轮,直⾄集中内容读取完毕,⽽括号是格式必须的(in到后⾯括号之间要有空格)。

命令:可以是任何合格的DOS命令或外部可被DOS调⽤的程序,且可采⽤括号把多条命令括起来,在⼀次循环中执⾏。

附注:由于⼀些⽬录或⽂件名可能会有空格,所以很多时候集⾥和命令⾥往往需要⽤英⽂引号括起来(但有时引号⾥的内容可能会被认为是字符串)表⽰是⼀整体,下⾯开始的有些例中为简捷起见,忽略⽂件名或⽬录名带空格这种情况。

现在按参数分类举例解释其⽤法:⼀、参数 /dfor /d %%变量 in (集) do 命令/d 参数是指定仅对⽬录⽽不是⽂件执⾏的for命令。

批处理命令中for循环基本用法

批处理命令中for循环基本用法

批处理命令行中for循环基本用法for循环是在办公自动化中非常实用的语句之一,本节讨论DOS语言中for循环的各种模式:如/r,/d,/l,/f等,以及各种参数:如tokens,delims,usebackq等的基本用法。

我们须要根据实际情况选择不同的模式和参数来配置for循环以达到我们的目的。

1、【for语句的常规用法】形式1:for %%i in (字符串集合/数字列表/…) do 命令语句@echo offfor %%i in (aa,bb,cc) do echo %%ipause结果为:aabbcc注:这里如果用点进行分割,字符串会作为一个整体输出如果用逗号分割,则会一次一个单次进行打印。

判断某个磁盘是否存在,如果盘符存在,则输出它:@echo offecho 存在有驱动器:for %%i in (a,b,c,d,e,f,g) if exist %%i: echo %%ipause显示当前目录下的文件名称(非文件夹,文件夹将不会被列出):@echo offfor %%i in (*.*) do echo "%%i"pause仅显示当前目录下的txt文件名称(通配符*.txt的用法):@echo offfor %%i in (*.txt) do echo "%%i"pause把txt换成其他扩展名亦可仅列出其他格式的文件名仅显示当前目录下的txt文件名称(通配符?规定字符个数):@echo offfor %%i in (??.txt) do echo "%%i"pause仅会输出当前目录下文件名为2个字符的txt文件名2、【关于for语句的/f模式(遍历文件内容模式)】①/f模式/f模式用于遍历文件中的内容:@echo offfor /f %%i in (test.txt) do echo %%ipause运行的结果,会逐行打印test.txt文件中的内容②delims参数(表示分隔符)使用delims提取每一行在特定符号之前的内容;当设置delims为逗号(,)时,只显示每一行逗号之前内容;@echo offfor /f "delims=," %%i in (test.txt) do echo %%i pause如果识别切分的符号有多个,则可以直接继续在第一个后面写,例如:"delims=.,"此时会先判定是否有英文句号,如果没有则再判断有没有英文逗号。

批处理for循环命令之文件搜索,搜索磁盘文件。

批处理for循环命令之文件搜索,搜索磁盘文件。

批处理之for循环命令实现文件搜索For /r命令实现文件搜索批处理是windows系统中的一种脚本语言,由txt文件直接编写,扩展名为.cmd或.bat,虽然作为一种脚本,但是灵活使用其中的命令对我们还是很有用的。

批处理中的for /r命令能够实现本地文件的搜索功能,首先介绍一下for /r命令实现文件搜索的用法:For /r 路径%%i in (关键字) do 要做的事其中路径可以改为你自己要搜索的路径如C:\ 关键字则是你要搜索的文件名如qq.exe或上海滩.mp3 等等。

do 后面接的是你要计算机循环做的事情例如:搜索计算机上C盘所有文件并显示出来,代码如下:For /r C:\ %%i in (*) do echo %%i运行效果:结果将会列出C盘所有文件,因为通配符*代表一串字符,C盘所有文件名都与*匹配。

例如:我要计算机搜索上海滩.mp3 这首歌(假如在E盘的某个位置)并将其绝对路径显示出来,代码如下:For /r E:\ %%i in (上海滩.mp3) do echo %%i运行效果:难道你的电脑上有这么多上海滩.mp3 吗?其实不是如果我们将代码改成:For /r E:\ %%i in (上海滩.mp3) do if exist %%i echo %%i效果如何呢?运行效果如下:所以,当我们在利用for /r命令搜索文件时,请加上if exist %%i 判断文件存在时才执行我们要循环做的事情题目:搜索C盘里所有的mp3文件代码如下:For /r C:\ %%a in (*.mp3) do if exist %%a echo %%a其中%%后面的字母a可以用其他任意字母代替,如%%s 、%%g等等,但必须保证在一组for循环命令中%%后面的字母必须相同,不能前面用%%i ,后面用%%a,这样是错误的。

运行效果:如果只记得文件部分名称怎么办,如何搜索?例如我只记得一个MP3文件名中有一个“爱”字,这个文件不知道放在磁盘什么位置,于是代码如下:For /r C:\ %%a in (*爱*.mp3) do if exist %%a echo %%aFor /r D:\ %%a in (*爱*.mp3) do if exist %%a echo %%aFor /r E:\ %%a in (*爱*.mp3) do if exist %%a echo %%a根据你电脑有几个磁盘自行添加命令运行效果:结果将会列出所有带“爱”字的MP3文件因此当我们在设置关键字时需要灵活使用通配符*? *代表一串字符?代表一个字符,当设置的关键字最优时,能提高for /r命令帮我搜索文件的效率和准确率以下代码利用了for /r 、set、if、重定向>、变量延时等批处理命令并结合HTML 代码形成了一个完整的文件搜索脚本程序,利用以下代码可迅速的自定义搜索计算机上的文件,搜索过程中具有较好的直观性,搜索的结果保存成一份以searchresult.html为文件名的html文档并放入和此脚本程序相同的目录中,搜索结果一目了然,利用html代码还可以对搜索到的文件执行“打开文件夹”的操作,增加了方便性。

批处理 循环语句for

批处理 循环语句for

3.2.1 for循环语句《批处理入门手册》三.批处理高级语句篇-----------------------------------------------------------------------------------------------------3.2.1 学习for循环语句学习要点:一.前言二.for语句的基本用法三.for /f 用法详解-----------------------------------------------------------------------------------------------------此文原文名为《for语句从入门到精通》,原文地址:/thread-2189-1-1.html一、前言在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto等流程控制语句,更是可以实现脚本复杂的自动化、智能化操作;合理使用for语句,还能使代码大为简化,免除各位编写大量重复语句之苦。

而能否熟练使用for语句,已经成为衡量一个人批处理水平高低最主要的标准。

在这个系列教程中,我将通过实际应用中频繁出现的例子,带领大家步入for语句的神奇之门,一步步迈向for语句的魔幻殿堂,使得大家在实际的应用中,能独立写出简洁高效的代码,在批处理的世界里自由驰骋。

注意:以下的讲解,都是基于简体中文Windows XP Pro SP3的操作系统环境-----------------------------------------------------------------------------------------------------二、for语句的基本用法[2008.11.9更新]正如色彩缤纷的七彩光芒是由红绿蓝三原色构成的一样,最复杂的for语句,也有其基本形态,它的模样是这样的:在cmd窗口中:for %I in (command1) do command2在批处理文件中:for %%I in (command1) do command2之所以要区分cmd窗口和批处理文件两种环境,是因为在这两种环境下,命令语句表现出来的行为虽然基本一样,但是在细节上还是稍有不同,最明显的一个差异就是:在cmd窗口中,for之后的形式变量I 必须使用单百分号引用,即%I;而在批处理文件中,引用形式变量I必须使用双百分号,即%%I。

批处理命令——for

批处理命令——for

批处理命令——for【1】for命令简介 先把for循环与for命令类⽐⼀下,这样学习理解快。

for 循环语句,⼀般格式如下:1for (表达式1;表达式2;表达式3)2 {3循环体;4 } 1. 表达式1 ⼀般为初始状态赋值表达式,给控制变量赋初值。

2. 表达式2 ⼀般为关系表达式或逻辑表达式,为循环控制条件。

3. 表达式3 ⼀般为每次执⾏循环体后向控制变量重新赋值的表达式(给控制变量增量或减量)。

4. 语句:循环体,⼀般为复合语句(即可能需要执⾏多条语句)。

举个实例:1for (int i=0; i < 100; ++i)2 {3 cout << i << endl;4 } for 命令,⼀般格式如下: 在cmd窗⼝中使⽤格式:FOR %variable IN (set) DO command [command-parameters] 在批处理脚本中使⽤格式:FOR %%variable IN (set) DO command [command-parameters] 1. 在cmd窗⼝中使⽤,变量名必须⽤单%引⽤(即:%variable);在批处理脚本中使⽤,变量名必须⽤双%引⽤(即:%%variable)。

2. for、in和do是for命令的三个关键字,缺⼀不可。

3. 关键字in之后,do之前的括号不能省略。

举个实例:新建⼀个⽂本⽂件,命名为fordemo,修改⽂件类型为bat,⽤Notepad++打开编辑内容为:1@echo off2for %%i in (1 2 3 4 5) do@echo %%i3pause>nul 执⾏结果: 嗯哼,原来for命令就这么简单?嗨,同学,不要浮躁,保持冷静,更要理智。

下⾯,且看对上例语句的分析: 从命令组成结构由左向右剖析,除过关键字,依次分别为: 1. 变量名为i,i太简单,作为变量名不具备见名知意的特点。

bat批处理for命令快速入门

bat批处理for命令快速入门

bat批处理for命令快速⼊门格式:FOR [参数] %%变量名 IN (相关⽂件或命令) DO 执⾏的命令作⽤:对⼀个或⼀组⽂件,字符串或命令结果中的每⼀个对象执⾏特定命令,达到我们想要的结果。

注意:在批处理⽂件中使⽤ FOR 命令时,指定变量请使⽤ %%variable,⽽不要⽤ %variable。

变量名称是区分⼤⼩写的,所以 %i 不同于 %I.关于:for命令可以带参数或不带参数,带参数时⽀持以下参数:/d /l /r /f 下⾯分别解释⼀下 零:⽆参数时: --- FOR %variable IN (set) DO command [command-parameters] %variable 指定⼀个单⼀字母可替换的参数。

(set) 指定⼀个或⼀组⽂件。

可以使⽤通配符。

command 指定对每个⽂件执⾏的命令。

command-parameters 为特定命令指定参数或命令⾏开关。

TTT⽰例: for %%i in (t*.*) do echo %%i --显⽰当前⽬录下与t*.*相匹配的⽂件(只显⽰⽂件名,不显⽰路径) for %%i in (d:\mydocuments\*.doc) do @echo %%i --显⽰d:\mydocuments\⽬录下与*.doc相匹配的⽂件⼀、参数 /d (参数只能显⽰当前⽬录下的⽬录名字)格式:FOR /D %variable IN (set) DO command [command-parameters] 这个参数主要⽤于⽬录搜索,不会搜索⽂件,/D 参数只能显⽰当前⽬录下的⽬录名字。

(TTT特别说明:只会搜索指定⽬录下的⽬录,不会搜索再下⼀级的⽬录。

) TTT⽰例: for /d %%i in (c:\*) do echo %%i --显⽰c盘根⽬录下的所有⽬录 for /d %%i in () do echo %%i --显⽰当前⽬录下名字只有1-3个字母的⽬录⼆、参数 /R (搜索指定路径及所有⼦⽬录中与set相符合的所有⽂件)格式:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 此命令会搜索指定路径及所有⼦⽬录中与set相符合的所有⽂件,注意是指定路径及所有⼦⽬录。

批处理文件的循环语句

批处理文件的循环语句

批处理文件的循环语句1. 批处理文件里的循环语句啊,就像是魔法咒语一样!它能让电脑按照你的想法一遍又一遍地干活儿呢。

比如说,我想把一个文件夹里所有的.txt文件都复制到另一个文件夹,就可以用for循环语句。

像这样:for %%i in (.txt) do copy %%i "目标文件夹路径",是不是超级方便?感觉就像有个小助手在帮我自动完成繁琐的工作。

2. 批处理文件的循环语句可不得了!这就好比是工厂里的传送带,一件接着一件地处理东西。

要是你想删除多个名字类似的文件,像那些以“temp_”开头的文件,那就可以用循环语句。

例如:for /f "delims=" %%a in ('dir temp_ /b') dodel %%a。

哇塞,就这么轻松搞定了,真让人兴奋不已!3. 批处理文件中的循环语句简直是救星般的存在!想象一下,你有一堆文件需要重命名,就像一群调皮的孩子都得换个新名字。

这时候循环语句就派上用场啦。

比如:for /l %%n in (1,1,10) do ren "旧文件名%%n.txt" "新文件名%%n.txt"。

是不是觉得自己像个超级指挥官,指挥着电脑乖乖听话呢?4. 批处理文件的循环语句太酷了吧!它就像是一个不知疲倦的小机器人,重复做着你吩咐的事情。

假如你要查看某个目录下每个子文件夹的大小,用循环语句就能轻松做到。

像这样:for /d %%i in () do dir /s /a "%%i" | find "文件总数"。

这就如同让小机器人挨个儿去探索每个小房间的大小一样有趣。

5. 批处理文件里的循环语句那可是个厉害角色!感觉就像拥有了一把万能钥匙,可以打开很多复杂操作的大门。

比如说你要统计多个文本文件里某一个单词出现的次数。

可以这样写循环语句:for %%f in (.txt) do find /c "那个单词" %%f。

for批处理语法

for批处理语法

for批处理语法FOR的语法FOR是一个循环命令。

所谓的循环指,对一组文件逐一运行一条命令,或对一组文件中的每一个文件执行某个特定命令。

FOR常用于循环命令、遍历查询、解析文本等。

1、FOR的基本语法格式:FOR /参数 %%I IN (Command1) DO Command2FOR /参数 %%字母 IN (集合) DO 命令 [命令参数]FOR /参数%%Variable IN (Set) DO Command [Command-Parameters](注意:这三条命令的语法格式都一致,只是表示方式不同而已。

一般情况下,本教程采用第一条表达,采用第二条讲解,采用第三条补充。

)2、用法:一句话总结:从集合中依次逐一提取变量执行后面的命令。

FOR—IN—DO这是FOR命令的基本结构,三个基本组成部分缺一不可。

FOR:负责打开循环命令开关。

IN负责从集合中抽取元素替换变量。

它后面的括号不能省略。

DO负责安排需要执行的命令和动作。

它可以是一个命令如echo,也可以是一组命令如if exist。

/参数、%%I、(Command1)、Command2是它的动态组成部分,也是我们讲解的重点。

参数:用来解释FOR,设置循环的模式。

FOR常用的参数有/D、/F、/R、/L。

变量:形式如%%I。

集合中用来执行后面命令的任意一个可能的数值,需要执行命令的对象,一个替换位置。

当它空缺时是变量,当FOR运行时它抽取集合里的数值替换自己,从而变成一个固定值。

因此它来自集合,限于集合范围。

集合范围、总量。

是一个数据库,由固定数值组成,向变量提供固定数值,用于替换变量。

变量和集合的关系是需求与供给的关系。

集合的个数决定了需要循环的次数。

集合要用括号括起来,不能缺少。

3、FOR的处理流程:打开循环命令FOR。

第一步,从集合中抓取第一个数值A。

用A替换形式变量%%I。

用被A替换的%%I运行一次DO后面的命令Command2。

批处理命令行for语句

批处理命令行for语句

for语句可以在命令行提示符中使用,也可以在批处理文件中使用。

这两种情况下唯一的区别是%和%%,参加下文说明。

一、for语句的格式:for [参数] 变量in (集合) do 命令[命令的参数]二、for语句的作用:对集合内的元素逐一执行后面的命令。

1、如:for %%i in (你好) do echo %%i将在屏幕上显示“你好”2个字。

这里集合是“你好”,执行的命令是“echo”。

由于集合中只有1个元素,因此循环只运行一次。

如果改成for %%i in (你好朋友) do echo %%i将会显示2行文字,第一行为“你好”,第二行为“朋友”。

因为2个词之间有空格,因此集合中就有了2个元素,循环将运行2次。

2、注意:以上for语句的运行方式是新建一个批处理文件,即扩展名为“.bat”的文件,内容为上面的命令,然后运行。

为了批处理执行完不退出,可在最后加上一条pause>null命令,这样能看到执行的结果。

要想通过cmd命令行执行的话,必须将%%换成%,即去掉一个%,如下:for %i in (你好) do echo %i3、以下所有例子都是这样,若要在命令行提示符下执行,请将所有的%%改成一个%。

三、for语句详细说明:上面语句格式中有的加了中括号[],表示这个语句元素不是必须的,只在需要时使用。

像刚才显示“你好”的命令中就没有使用[参数]这个语句元素。

所有语句元素间用空格隔开。

各语句元素的写法:for、in、do这3个符号是固定不变的1、[参数]的种类:只有4种,分别是/d、/r、/l、/f(即目录Directory、递归recursion、序列list、文件file),他们用于对后面的集合的含义做出解释,请与下面的集合解释结合来看。

这4个参数不区分大小写,可以联合使用,即一条for语句可以出现多个参数。

2、变量:除10个数字外(0-9)的所有符号(因为0-9往往作为形参使用,为了与此区别),变量名一般用单个字母表示即可,而且变量名区分大小写,即A和a是两个不同的变量。

批处理-----4.for循环中的变量

批处理-----4.for循环中的变量

批处理-----4.for循环中的变量FOR命令中的变量FOR命令中有⼀些变量,他们的⽤法许多新⼿朋友还不太了解,今天给⼤家讲解他们的⽤法!先把FOR的变量全部列出来:~I - 删除任何引号("),扩展 %I%~fI - 将 %I 扩展到⼀个完全合格的路径名%~dI - 仅将 %I 扩展到⼀个驱动器号%~pI - 仅将 %I 扩展到⼀个路径%~nI - 仅将 %I 扩展到⼀个⽂件名%~xI - 仅将 %I 扩展到⼀个⽂件扩展名%~sI - 扩展的路径只含有短名%~aI - 将 %I 扩展到⽂件的⽂件属性%~tI - 将 %I 扩展到⽂件的⽇期/时间%~zI - 将 %I 扩展到⽂件的⼤⼩%~$PATH:I - 查找列在路径环境变量的⽬录,并将 %I 扩展到找到的第⼀个完全合格的名称。

如果环境变量名未被定义,或者没有找到⽂件,此组合键会扩展到空字符串我们可以看到每⾏都有⼀个⼤写字母"I",这个I其实就是我们在FOR带⼊的变量,我们FOR语句代⼊的变量名是什么,这⾥就写什么.⽐如:FOR /F %%z IN ('set') DO @echo %%z这⾥我们代⼊的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz⾄于前⾯的%~p这样的内容就是语法了!好开始讲解:⼀、 ~I - 删除任何引号("),扩展 %I这个变量的作⽤就如他的说明,删除引号!我们来看这个例⼦:⾸先建⽴临时⽂件temp.txt,内容如下"1111"2222"3333""4444"44"55"55"55可建⽴个BAT⽂件代码如下:1 2 3 4 5 6 7 8 9 10 11@echo offecho^"1111>temp.txtecho"2222">>temp.txtecho3333^">>temp.txtecho"4444"44>>temp.txtecho^"55"55"55>>temp.txtrem 上⾯建⽴临时⽂件,注意不成对的引号要加转义字符^,重定向符号前不要留空格FOR /F "delims="%%i IN (temp.txt) DO echo%%~ipausedel temp.txt执⾏后,我们看CMD的回显如下:1111 #字符串前的引号被删除了2222 #字符串⾸尾的引号都被删除了3333" #字符串前⽆引号,后⾯的引号保留4444"44 #字符串前⾯的引号删除了,⽽中间的引号保留55"55"55 #字符串前⾯的引号删除了,⽽中间的引号保留请按任意键继续. . .和之前temp.txt中的内容对⽐⼀下,我们会发现第1、2、5⾏的引号都消失了,这就是删除引号~i的作⽤了!删除引号规则如下(BAT兄补充!)1、若字符串⾸尾同时存在引号,则删除⾸尾的引号;2、若字符串尾不存在引号,则删除字符串⾸的引号;3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。

批处理for命令详解

批处理for命令详解

注:for命令下的查找文件功能,默认不显示隐藏文件。
练习:用for语句建立test1.txt、test2.txt和test3.txt三个文本文件。
@echo off
for %%i in (nul) do type %%i>test1.txt&type %%i>test2.txt&type %%i>test3.txt
拆分
dir /s /b /l /aa /od f:\*exe >1.txt
find /c "exe" 1.txt
dir /s /b /l /aa-s-h-r /on d:\*mp3|find /c "mp3"
==============================================
显示文本我们常常会想到以下命令 type more sort find findstr 等命令,不过这里for也可以的哦。
使用
@echo off
for /f %%i in (1.txt) do echo %%i
pause
逐行分析文本文件的内容。
便是 for /f 最为强大的一个功能。
for /f %%i in (filenames) do echo %%i
for /f %%i in ('command') do echo %%i
for /f %%i in ("string) dor echo %%i
查找f盘共有多少个exe文件
dir /s /b /l /aa /od f:\*exe|find /c "exe"
重要提示

【bat】bat中的for循环,bat实现获取文件每行内容

【bat】bat中的for循环,bat实现获取文件每行内容

【bat】bat中的for循环,bat实现获取⽂件每⾏内容关键词:bat中的for,bat获取⽂件内容【1】简介【1.1】⼀般形式FOR 参数 %%变量名 IN (相关⽂件或命令) DO 执⾏的命令(1)在cmd窗⼝中:for %I in (command1) do command2(2)在批处理⽂件中:for %%I in (command1) do command2【1.2】基本了解 之所以要区分cmd窗⼝和批处理⽂件两种环境,是因为在这两种环境下,命令语句表现出来的⾏为虽然基本⼀样,但是在细节上还是稍有不同。

最明显的⼀个差异就是:在cmd窗⼝中,for之后的形式变量 I 必须使⽤单百分号引⽤,即%I;⽽在批处理⽂件中,引⽤形式变量I必须使⽤双百分号,即%%I。

为了⽅便起见,若不是特别强调,以下的讲解都以批处理⽂件环境为例。

我们先来看⼀下for语句的基本要素都有些什么: (1)for、in和do是for语句的关键字,它们三个缺⼀不可; (2)%%I是for语句中对形式变量的引⽤,即使变量l在do后的语句中没有参与语句的执⾏,也是必须出现的;变量可以是 a~z,A~Z,区分⼤⼩写。

(3)in之后,do之前的括号不能省略; (4)command1表⽰字符串或变量,command2表⽰字符串、变量或命令语句;下⾯来看⼀个Windows bat脚本的demo(记为demo1):@echo offfor %%I in (ABC) do echo %%Ipause保存为.bat⽂件(批处理⽂件)并执⾏,将会在弹出的批处理窗⼝中看到这样的信息:对批处理⽂件的for循环就是这样简单,下⾯来看看for语句的注意事项,并运⾏更复杂的for循环实例。

for语句的形式变量I,可以换成26个字母中的任意⼀个,这些字母会区分⼤⼩写,也就是说,%%I和%%i会被认为不是同⼀个变量; 形式变量I还可以换成其他的字符,但是,为了不与批处理中的%0~%9这10个形式变量发⽣冲突,请不要随意把%%I替换为%%0~%%9中的任意⼀个; in和do之间的command1表⽰的字符串或变量可以是⼀个,也可以是多个,每⼀个字符串或变量,我们称之为⼀个元素,每个元素之间,⽤空格键、跳格键、逗号、分号或等号分隔;for语句依次提取command1中的每⼀个元素,把它的值赋予形式变量I,带到do后的command2中参与命令的执⾏;并且每次只提取⼀个元素,然后执⾏⼀次do后的命令语句,⽽⽆论这个元素是否被带到command2中参与了command2的运⾏;当执⾏完⼀次do后的语句之后,再提取command1中的下⼀个元素,再执⾏⼀次command2,如此循环,直到command1中的所有元素都已经被提取完毕,该for语句才宣告执⾏结束。

sqlfor循环用法

sqlfor循环用法

sqlfor循环用法
sqlfor循环是一种基于结构化查询语言(SQL)的常见遍历方式,用于在指定条件下,在数据表中重复执行SQL语句。

SQLfor循环可以
让应用程序执行者对数据库中的数据行进行批处理,以解决复杂的数
据库问题。

使用 SQLfor循环的方法非常简单,首先,请定义一个被遍历的
数据表,然后定义一个循环体中的列表的变量。

然后,请定义每次循
环中要执行的SQL语句,包括筛选条件、将数据表上列值更新成新值、插入或删除数据行等操作。

最后,请指定循环体,然后在SQL环境中
执行for循环,最后可以开始批处理操作。

SQLfor循环的另一个优势是可扩展性,可以轻松的将一条SQL语句转换成一个复杂的结构化程序。

另外,它被大量使用于数据库性能
测试,可以比较不同的SQL参数设置以了解在不同情况下的数据库性
能的差异。

总的来说,SQLfor循环是一种强大的SQL遍历方式,可用于解决复杂的数据库问题和进行性能测试,还可以将一条SQL语句转换为更
复杂的结构化程序,是一种非常有用的数据处理方式。

WINDOWS批处理FOR循环常用技巧

WINDOWS批处理FOR循环常用技巧

批处理技巧1FOR循环FOR循环的使用有多种,具本可在cmd中键入FOR /?查看帮助文件。

但以下三种格式在实际使用中常用到。

1.1FOR %%i IN (…) DO此类循环使用最常见,定义的变量直接取代IN列表中的值,如下所示:FOR%%i IN (475 515 59 67 74 795 102 122) DO(AMR_NB_ENC.exe -dtx MR%%i enc_in\1.pcm enc_out\1_%%i_1.cod)这就是一个AMR全部速率编码的实例,它等价于以下批处理:AMR_NB_ENC.exe -dtx MR475 enc_in\1.pcm enc_out\1_475_1.codAMR_NB_ENC.exe -dtx MR515 enc_in\1.pcm enc_out\1_515_1.codAMR_NB_ENC.exe -dtx MR59 enc_in\1.pcm enc_out\1_59_1.codAMR_NB_ENC.exe -dtx MR67 enc_in\1.pcm enc_out\1_67_1.codAMR_NB_ENC.exe -dtx MR74 enc_in\1.pcm enc_out\1_74_1.codAMR_NB_ENC.exe -dtx MR795 enc_in\1.pcm enc_out\1_795_1.codAMR_NB_ENC.exe -dtx MR102 enc_in\1.pcm enc_out\1_102_1.codAMR_NB_ENC.exe -dtx MR122 enc_in\1.pcm enc_out\1_122_1.cod1.2FOR /L %%i IN (start, step, end) DO此循环类似于C语言中的for循环,它将依据IN列表中的表达式生成一个序列,如下所示:FOR /L %%i IN (1, 1, 5) DO(AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_%%i.dec 1 %%i 1)%%i 将生成为如下序列(1 2 3 4 5),以上批处理等价于:AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_1.dec 1 1 1AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_2.dec 1 2 1AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_3.dec 1 3 1AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_4.dec 1 4 1AMR_lost.exe enc_out\1_122_1.cod dec_in\1_122_1_5.dec 1 5 1类似,(5, -1, 1)将生成序列(5 4 3 2 1)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、命令格式
FOR参数%%变量名IN (相关文件或命令)DO执行的命令
参数:FOR有4个参数/d /l /r /f 它们的作用将在下文给出实例介绍;
%%变量名:这个变量名可以是小写a-z或者大写A-Z,他们区分大小写,FOR会把每个读取到的值给它;
IN:是命令的格式,照写就是了;(相关文件或命令) :FOR要把什么东西读取然后赋值给变量;
do:命令的格式,照写就是了;执行的命令:对每个变量的值要执行什么操作就写在这;
二、参数详细介绍
/D:仅为目录,如果Set 设置变量,将对与Set 相匹配的每个目录(而不是指定目录中的文件组)执行指定的Command。

看下面的例子
@echo off
for /d %%i in (*) do @echo %%i
上述命令的作用:把C盘目录下的全部目录名字打印出来,而文件名字一个也不显示!
在看例子,比如我们要把当前路径下文件夹的名字只有1-3个字母的打出来
@echo off
for /d %%i in (???) do @echo %%i
命令作用:当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了
/D参数只能显示当前目录下的目录名字,这个大家要注意!
/R:递归,进入根目录树[Drive:]Path,在树的每个目录中执行for 语句。

如果在/R 后没有指定目录,则认为是当前目录。

如果Set 只是一个句点(.),则只枚举目录树。

功能:可以把当前或者你指定路径下的文件名字全部读取,注意是文件名字!
@echo off
for /r c:\ %%i in (*.exe) do @echo %%i
命令的作用:把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了,这
里的c:\就是目录了。

再看一个:
@echo off
for /r %%i in (*.exe) do @echo %%i
注意:参数不一样了,这个命令前面没加那个C:\;也就是没有指定搜索路径,这样它就会以当前目录为搜索路径。

/L:迭代数值范围,使用迭代变量设置起始值(Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值(End#)
/L 将通过对Start# 与End# 进行比较来执行迭代变量。

如果Start# 小于End#,就会执行该命令。

如果迭代变量超过End#,则命令解释程序退出此循环。

还可以使用负的Step# 以递减数值的方式逐步执行此范围内的值。

例如,(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
命令的作用:会打印从1 2 3 4 5 这样5个数字,(1,1,5)这个参数也就是表示从1开始每次加1直到5终止!
再来个例子
@echo off
for /l %%i in (1,1,5) do start cmd
命令作用:打开5个cmd窗口;
/F:用法如下:
命令格式:
FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["options"] %%i IN ('command') DO command
这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果。

file代表一个或多个文件
string 代表字符串
command代表命令
["options"] 可选
file为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行,看个例子。

假如文件a.txt中有如下内容:
第1行第1列第1行第2列第1行第3列
第2行第1列第2行第2列第2行第3列
第3行第1列第3行第2列第3行第3列
你想显示a.txt中的内容,会用什么命令呢?当然是type,type a.txt
for也可以完成同样的命令:
for /f %%i in (a.txt) do echo %%i
还是先从括号执行,因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,
"第1行第1列第1行第2列第1行第3列",//第一个元素
"第2行第1列第2行第2列第2行第3列",//第二个元素
"第3行第1列第3行第2列第3行第3列"} //第三个元素
集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令。

为了加强理解/f的作用,请执行一下两个命令,对比即可明白:
for /f %%i in (a.txt) do echo %%i //这个会显示a.txt里面的内容,因为/f的作用,会读出a.txt中的内容。

for %%i in (a.txt) do echo %%i //而这个只会显示a.txt这个文件的名称,并不会读取其中的内容。

通过上面的学习,我们发现for /f会默认以每一行来作为一个元素,但是如果我们还想把每一行再分解更小的内容,该怎么办呢?不用担心,for命令还为我们提供了更详细的参数,使我们将每一行分为更小的元素成为可能。

它们就是:delims和tokens
delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键
比如,还是上面的文件,我们执行下面的命令:
for /f "delims= " %%i in (a.txt) do echo %%i
显示的结果是:
第1行第1列
第2行第1列
第3行第1列
为什么是这样的呢。

因为这里有了delims这个参数,=后面有一个空格,意思是再将每个元素以空格分割,默认是只取分割之后的第一个元素。

但是这样还是有局限的,如果我们想要每一行的第二列元素,那又如何呢?
这时候,tokens跳出来说,我能做到。

它的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。

还是上面的例子,执行如下命令:
for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i
执行结果:
第1行第2列
第2行第2列
第3行第2列
如果要显示第三列,那就换成tokens=3。

同时tokens支持通配符*,以及限定范围。

如果要显示第二列和第三列,则换成tokens=2,3或tokens=2-3,如果还有更多的则为:tokens=2-10之类的。

此时的命令为:
for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j
怎么多出一个%%j?
这是因为你的tokens后面要取每一行的两列,用%%i来替换第二列,用%%j来替换第三列。

并且必须是按照英文字母顺序排列的,%%j不能换成%%k,因为i后面是j
执行结果为:
第1行第2列第1行第3列
第2行第2列第2行第3列
第3行第2列第3行第3列
对以通配符*,就是把这一行全部或者这一行的剩余部分当作一个元素了。

比如:
for /f "tokens=* delims= " %%i in (a.txt) do echo %%i
执行结果为:
第1行第1列第1行第2列第1行第3列
第2行第1列第2行第2列第2行第3列
第3行第1列第3行第2列第3行第3列
其实就跟for /f %%i in (a.txt) do echo %%i的执行结果是一样的。

再如:
for /f "tokens=2,* delims= " %%i in (a.txt) do echo %%i %%j
执行结果为:
第1行第2列第1行第3列
第2行第2列第2行第3列
第3行第2列第3行第3列
用%%i代替第二列,用%%j代替剩余的所有
最后还有skip合eol,这俩个简单,skip就是要忽略文件的前多少行,而eol用来指定当一行以什么符号开始时,就忽略它。

比如:
for /f "skip=2 tokens=*" %%i in (a.txt) do echo %%i
结果为:
第3行第1列第3行第2列第3行第3列
用skip来告诉for跳过前两行。

如果不加tokens=*的话,执行结果为:
第3行第1列
不知道怎么回事。

再如,当a.txt内容变成:
.第1行第1列第1行第2列第1行第3列
.第2行第1列第2行第2列第2行第3列
第3行第1列第3行第2列第3行第3列
执行for /f "eol=. tokens=*" %%i in (a.txt) do echo %%i结果是:第3行第1列第3行第2列第3行第3列
用eol来告诉for忽略以"."开头的行。

同样也必须加tokens=*,否则只会显示"第3行第1列"。

相关文档
最新文档