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

合集下载

批处理for命令详解

批处理for命令详解
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 命令详解
FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令 参数:FOR 有 4 个参数 /d /l /r /f %%变量名: (在命令行中为 %变量名)区分大小写,FOR 会把每个读取到的值给他;
=== 无参数 ---
FOR %variable IN (set) DO command [command-parameters] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。
=== 参数 /d (只显示当前目录下的目录名字) ---
格式:FOR /D %variable IN (set) DO command [command-parameters] 这个参数主要用于目录搜索,不会搜索文件,/D 参数只能显示当前目录下的目录名字。(TTT 特别说明:只会 搜索指定目录下的目录,不会搜索再下一级的目录。)
示例: for /d %%i in (c:\*) do echo %%i --显示 c 盘根目录下的所有目录 for /d %%i in (???) do echo %%i --显示当前目录下名字只有 1-3 个字母的目录

批处理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 命令详解

∙ DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~)∙ ---∙本文链接地址:/ttt/post/137.html∙ ---∙前言:∙虽然以前对批处理也算有点研究,但一直对for命令理解不够透彻,偶尔用时也是照猫画虎的用一下。

∙虽然这是古董级的东西,但挺有意思的,而且有时用处也是蛮大的,所以,这次下决心研究一下,通过两个晚上的学习和测试,算是理解了90%了,很有成就感。

∙在这次学习过程中,我作了详细的总结和说明,在这里帖出来,供不明白的朋友参阅。

自认为是写得比任何教程写得都明白,因为我是从不明白过来的,是结合自己从不理解到理解的过程写的,呕心沥血啊~~所以大胆地说是史上虽详尽的总结和说明~~∙其实,这次学习主要是通过一位高手写的教程,再结合系统提供的帮助完成的。

这个教程写得真的很不错,可惜忘了记下出处和作者了!刚才又在网上搜了一下,发现这篇教程到处都有转载,都找不到作者和原出处!实在感谢这位不知名的高手啊!∙ --TTT 200906160033∙+++∙格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令∙作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。

∙注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable。

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

∙(set) 指定一个或一组文件。

可以使用通配符。

∙command 指定对每个文件执行的命令。

批处理命令——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太简单,作为变量名不具备见名知意的特点。

批处理文件的循环语句

批处理文件的循环语句

批处理文件的循环语句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。

CMD DOS循环:for命令详解

CMD DOS循环:for命令详解

第二章 DOS循环:for命令详解一、基本格式FOR %%variable IN (set) DO command [command-parameters] %%variable 指定一个单一字母表示可替换的参数。

(set) 指定一个或一组文件。

可以使用通配符。

command 指定对每个文件执行的命令。

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

参数:FOR有4个参数 /d /l /r /f 他们的作用我在下面用例子解释现在开始讲每个参数的意思二、参数 /dFOR /D %%variable IN (set) DO command [command-parameters] 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

如果 Set (也就是我上面写的 "相关文件或命令") 包含通配符(* 和 ?),将对与Set 相匹配的每个目录(而不是指定目录中的文件组)执行指定的 Command。

这个参数主要用于目录搜索,不会搜索文件,看这样的例子@echo offfor /d %%i in (c:\*) do echo %%ipause运行会把C盘根目录下的全部目录名字打印出来,而文件名字一个也不显示!在来一个,比如我们要把当前路径下文件夹的名字只有1-3个字母的打出来@echo offfor /d %%i in (???) do echo %%ipause这样的话如果你当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了这里解释下*号和?号的作用,*号表示任意N个字符,而?号只表示任意一个字符知道作用了,给大家个思考题目!@echo offfor /d %%i in (window?) do echo %%ipause保存到C盘下执行,会显示什么呢?自己看吧! 显示:windows/D参数只能显示当前目录下的目录名字,这个大家要注意!三、参数 /RFOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters] 检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。

windows批量处理命令写法

windows批量处理命令写法

windows批量处理命令写法在Windows中,你可以使用批处理脚本(以.bat为扩展名)来进行批量处理。

以下是一些常用的Windows批处理命令和写法:1. 循环结构:- for命令:用于循环处理文件或目录。

```batchfor %%i in (*.txt) do (echo %%iREM 其他处理命令)```这个例子遍历当前目录下的所有txt文件,并对每个文件执行处理命令。

- for /f命令:从文件内容中逐行读取数据。

```batchfor /f "tokens=1,2 delims=," %%a in (input.txt) do (echo %%a - %%bREM 其他处理命令)```这个例子从`input.txt`文件中读取以逗号分隔的两列数据,并对每一行执行处理命令。

2. 条件语句:- if命令:用于条件判断。

```batchif exist file.txt (echo 文件存在) else (echo 文件不存在)```这个例子检查文件`file.txt`是否存在,并根据结果执行不同的处理命令。

3. 变量和参数:- set命令:用于设置和操作环境变量。

```batchset VAR=valueecho %VAR%```这个例子设置一个变量VAR的值,并在后续代码中使用。

- %1, %2, ... %n:用于获取脚本参数。

```batchecho 第一个参数:%1echo 第二个参数:%2```这个例子显示脚本接收到的第一个和第二个参数。

4. 文件和文件夹操作:- copy命令:用于复制文件。

```batchcopy source.txt destination.txt```- move命令:用于移动文件。

```batchmove file.txt new\folder\```- del命令:用于删除文件。

```batchdel file.txt```这只是一些基础的示例,实际情况可能会更复杂。

终极dos批处理for循环命令详解

终极dos批处理for循环命令详解

终极dos批处理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相符合的所有⽂件,注意是指定路径及所有⼦⽬录。

批处理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"
重要提示

批处理之FOR语法(精)

批处理之FOR语法(精)

第一节FOR的语法恭喜你捡到了一本批处理秘籍《FOR入门与精通》!本秘籍为做到“一看就懂,一学就会”有些地方反复讲解和举证,如觉得啰嗦请直接跳过。

考虑到FOR的参数比较复杂,也是重点,所以放到了最后。

如对第二、三节的内容早已了解请直接跳过。

如有其他疑问欢迎访问本人博客:/cjiabing。

下面我们开始FOR的神奇之旅……一、概述欢迎进入FOR的神奇世界!FOR就像魔法师手里的魔法棒,武士手里的剑。

或许这样形容更好,批处理命令相当于法术师的魔咒,而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负责从集合中抽取元素替换变量。

它后面的括号不能省略。

【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语句才宣告执⾏结束。

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)。

常用批处理

常用批处理

集合(一)概述FOR命令常见的三种表达方式:IN (Command1)、IN (集合)、IN (Set)。

集合,也称集。

在批处理里,它确定一个范围、总量,是一个数据库,由固定数值(元素)组成,向变量提供固定数值,用于替换变量。

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

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

集合必须用圆括号括起来。

集合里的内容包罗万象。

可以是单个字符,也可以是字符串,可以是文件,也可以是命令。

我们见得最多有:路径+文件名:如c:\note.txt文本:如歌曲列表.txt字词:如我爱北京天安门数字:如123符号:如+、-、*、\命令:如’set’盘符:如c:\还有时间、进程、注册表、服务、内存管理、启动等等。

集合里可以是只有一个元素(数值),如:“我爱北京天安门”也可以有多个,如:“c: d: e: f:”甚至所有、全部,如:*.*可以确指,如“我爱北京天安门”也可以是模糊的,如:w?s.*(二)FOR与文件查询由于FOR也可以用来查询文件,FOR结合通配符查询文件的功能要比DIR强得多,因此有必要结合通配符来谈谈FOR命令。

通配符(?和*)常用来代替未具体指明的文件和数据。

?代表单个字符。

* 代表全部字符。

将通配符用于集合内,FOR可以展现强大的搜索能力。

1、查询当前目录(批处理命令所在的位置)的所有文件:@echo offfor %%i in (*.*) do echo "%%i"pause讲解:*.*的第一个星号表示文件名,第二个星号表示扩展名,整体表示所有类型的文件。

2、列举当前目录下所有扩展名为txt的文件:@echo offfor %%i in (*.txt) do echo "%%i"pause讲解:*.txt表示所有扩展名为txt的文件,也就是所有文档(记事本)文件了。

3、查询txt和doc两种类型的文档:@echo offfor %%i in (*.doc *.txt) do echo "%%i"pause讲解:集合里包含两个元素*.doc和*.txt,两者之间六个空格。

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

批处理之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代码还可以对搜索到的文件执行“打开文件夹”的操作,增加了方便性。

由于本人所学有限,并不能保证程序毫无瑕疵,欢迎指正。

代码如下:@Echo offmode con cols=35 lines=5 & color 5Bsetlocal enabledelayedexpansionif %cd:~-1%==\ (set pth=%cd%) else (set pth=%cd%\)Title 搜索本地文件set Word=set /p Word=输入关键字:set chek1=%Word: =/%set chek2=%Word: =-%if "%Word%"=="" cls&ECHO 输入不能为空!&ping -n 2 127.0.0.1>nul&%0if %chek1% neq %chek2% cls&echo 禁止输入空格!&ping -n 2 127.0.0.1>nul&%0Title 选择范围-文件搜索VER|FIND "版本6">nulif %errorlevel%==0 goto WIN7if %errorlevel%==1 goto XP:WIN7CLSecho 选择范围CHOICE /C 1230z /n /t 15 /d z /m "1.全盘2.除C盘3自定义0.返回"IF errorlevel 5 GOTO TIMEUPIF errorlevel 4 %0IF errorlevel 3 GOTO CUSTOMIF errorlevel 2 GOTO EXCEPTIF errorlevel 1 GOTO ALL:XPclsECHO 1.全部磁盘 2.除C盘外的磁盘ECHO 3.自定义范围0.返回set Range=set /p Range=输入序号选择范围:set chek1=%Range: =/%set chek2=%Range: =-%if "%Range%"=="" cls&ECHO 输入不能为空!&ping -n 2 127.0.0.1>nul&goto XPif %chek1% neq %chek2% cls&echo 禁止输入空格!&ping -n 2 127.0.0.1>nul&goto XP IF %Range%==1 GOTO ALLIF %Range%==2 GOTO EXCEPTIF %Range%==3 GOTO CUSTOMIF %Range%==0 %0cls&echo 输入无效!&ping -n 2 127.0.0.1>nul&goto XP:CUSTOMmode con cols=36 lines=8 & color 5BCLSTitle 自定义范围-文件搜索ECHO 输入多个盘符请用,隔开如:C,D,E,FECHO 警告:重复输入多个相同盘符(如C,C,C)将导致重复扫描!使结果不准确!ECHO 输入无效盘符则只能搜索本程序所在磁盘set /p DSK=输入盘符:mode con cols=60 lines=7 & color 5BclsTitle 文件搜索中...ECHO 状态:正在搜索...ECHO 关键字:%Word%ECHO 搜索范围:%DSK%盘set num=0ECHO 发现个数:!num!ECHO 发现路径:echo ^<a href="/laiwei01/blog"^>访问作者主页^</a^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;文件搜索^&nbsp;^&nbsp;版本:2.0^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^<spanstyle="color:red"^>欢迎您同我一起学习,进步!^&nbsp;我的QQ:1009693258^</span^>^&nbsp;^&nbsp;编辑时间2012-05-14^&nbsp;22:06^<hr^>>"%pth%searchresult.html"ECHO 搜索范围:%DSK%盘^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;关键字:^<span style="color:red"^>%Word%^</span^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbs p;搜索时间:%date:~0,4%-%date:~5,2%-%date:~8,2% 星期%date:~-1% %time:~0,5%^<hr^>^<br/^>^<br/^>>>"%pth%searchresult.html"for %%a in (%DSK%) do (cd /d %%a:\for /r %%i in (%Word%) do if exist %%i cls&set /a num+=1&echo 状态:正在搜索...&echo 关键字:%Word%&echo 搜索范围:%DSK%盘&echo 发现个数:!num!&echo 发现路径:%%i&echo 【!num!】%%~dpi^<span style="color:red"^>%%~nxi^</span^>^<br/^>^<a href="%%~dpi"^>打开文件夹^</a^>^<hr^>>>"%pth%searchresult.html")clstitle 文件搜索完毕!echo 搜索完毕共搜索到!num!个文件。

echo 按任意键查看搜索结果!pause>nulstart "" "%pth%searchresult.html"exit:ALLmode con cols=60 lines=7 & color 5BCLSTitle 文件搜索中...ECHO 状态:正在搜索...ECHO 关键字:%Word%ECHO 搜索范围:全盘set num=0ECHO 发现个数:!num!ECHO 发现路径:echo ^<a href="/laiwei01/blog"^>访问作者主页^</a^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;文件搜索^&nbsp;^&nbsp;版本:2.0^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^<spanstyle="color:red"^>欢迎您同我一起学习,进步!^&nbsp;我的QQ:1009693258^</span^>^&nbsp;^&nbsp;编辑时间2012-05-14^&nbsp;22:06^<hr^>>"%pth%searchresult.html"ECHO 搜索范围:全盘^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;关键字:^<spanstyle="color:red"^>%Word%^</span^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbsp;^&nbs p;搜索时间:%date:~0,4%-%date:~5,2%-%date:~8,2% 星期%date:~-1% %time:~0,5%^<hr^>^<br/^>^<br/^>>>"%pth%searchresult.html"for %%a in (C,D,E,F,G,H,I,J) do (cd /d %%a:\for /r %%i in (%Word%) do if exist %%i cls&set /a num+=1&echo 状态:正在搜索...&echo 关键字:%Word%&echo 搜索范围:全盘&echo 发现个数:!num!&echo 发现路径:%%i&echo 【!num!】%%~dpi^<span style="color:red"^>%%~nxi^</span^>^<br/^>^<a href="%%~dpi"^>打开文件夹^</a^>^<hr^>>>"%pth%searchresult.html")clstitle 文件搜索完毕!echo 搜索完毕共搜索到!num!个文件。

相关文档
最新文档