BAT批处理文件for循环的基本格式

  一,基本格式

  对一组文件中的每一个文件执行某个特定命令。

  FOR %variable IN (set) DO command [command-parameters]

  %variable 指定一个单一字母可替换的参数。

  (set) 指定一个或一组文件。可以使用通配符。

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

  command-parameters

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

  在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable

  而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

  参数:for有4个参数 /d /l /r /f 他们的作用在下面的例子中讲解

  二,参数/d

  FOR /D %variable IN (set) DO command [command-parameters]

  如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

  例如:

  @echo off

  for /d %%i in (c:*) do echo %%i

  pause

  运行后, 会把c盘根目录下的全部目录打印出来, 不会打印文件

  例子:

  @echo off

  for /d %%i in (???) do echo %%i

  pause

  会把当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了

  * 号表示任意N个字符,而?只表示任意一个字符

  三,参数/r

  FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

  检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。

  如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,

  则枚举该目录树。

  /r 可以把当前或者你指定路径下的文件名全部读取,注意是文件名字,

  注意2点:

  1.set中的文件名如果含有通配符(?或*),则列举/r参数指定的目录及其下面的所有子目录中和set相符合的所有文件,无相符文件的目录则不列举

  2.相反,如果set中为具体文件名,不含通配符,则列举该目录树,而不管set中的指定文件是否存在

  例子:

  @echo off

  for /r d: %%i in (*.exe) do echo %%i

  pause

  将把d盘里以exe结尾的文件全部列出来

  @echo off

  for /r d: %%i in (boot.ini) do echo %%i

  pause

  列举d盘中存在boot.ini文件的目录

  四。

  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)

  start 为起始值,stup为增量,end结束值,

  例子:

  @echo off

  for /l %%i in (1,1,5) do echo %%i

  pause

  将会列出12345 这几个值

  @echo off

  for /l %%i in (1,1,5) do start cmd

  pause

  会打开5个cmd的窗口

  五,参数/F

  迭代及文件解析

  使用文件解析来处理命令输出,字符串及文件内容,使用迭代变量定义要检查的内容或字符串,并使用各种option选项来进一步

  修改解析方式,使用options令牌选项指定那些令牌应该作为迭代变量传递

  注意:在没有使用令牌选项时,/f将只检查第一个令牌

  文件解析过程包括读取输出,字符串或文件内容,将其分成独立的文本行以及在将每行解析成零个或更多个令牌

  让后通过设置为令牌的迭代变量值,调用for循环,默认情况下,/f传递每个文件每一行的第一个空白分隔符,跳过空行

  命令格式:

  FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

  FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

  FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

  带引号的字符串“options”包括一个或多个

  指定不同解析选项的关键字,这些关键字为:

  eol=c 指定一个注释字符的结尾(就一个)

  skip=n 指在文件开始时忽略的行数

  delims=xxx 指定分隔符集,这个替换了空格和跳格键的默认分隔符集

  tokens=x,y,m-n 指每行的哪一个符合被传递到每个迭代的for本身,这回倒是额外名称的分配,m-n格式为一个范围

  通过nth符号指定mth,如果符号字符串中的最好一个字符星号,那么额外的变量将在最好一个符号解析之后分配并接受行的保留文本,

  经过测试,该参数最多只能区分31个字段

  usebackq 指定新语法已在下类情况中使用:

  在作为命令执行一个后引号的字符串并且一个单

  引号字符为文字字符串命令并允许在 file-set

  中使用双引号扩起文件名称。

  例子:

  @echo off

  rem 首先建立临时文件,用完删除>test.txt

  echo ;注释行,这个是临时文件,用完删除>text.txt

  echo 11 12 13 14 15 16 >> test.txt

  echo 21,22,23,24,25,26 >> test.txt

  echo 31-32-33-34-35-36 >> test.txt

  for /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k

  pause

  del text.txt

  运行......

  解释:

  eol=; 分号开头的行尾注释行

  tokens=1,3- 将每行第1段,第3段和剩余地段分别赋予变量%%i,%%j,%%k

  delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后

  例子:

  @echo off

  for /f "skip=4 delims=" %%i in ('net user') do echo %%i

  pause

  这样你本机全部账号名字就出来了把括号内的内容用两个单引号起来就表示那个当命令执行,for会返回命令的没行结果

  ,加那个"delims=" 是为了让空格的行能正行显示出来,不加就默认只显示空格左边一列,应为默认的分隔符为空格或叫跳格键

时间: 2024-10-02 14:40:16

BAT批处理文件for循环的基本格式的相关文章

BAT批处理文件语法第1/2页_DOS/BAT

扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件.  .bat是dos下的批处理文件  .cmd是nt内核命令行环境的另一种批处理文件  从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言.所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的

dos之bat批处理文件语法介绍_DOS/BAT

首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件. 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令.当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的.批处理的程序

Win7执行bat批处理文件显示乱码该如何解决

  Win7系统执行bat批处理文件显示乱码的解决方法 其实原因很简单,是由于bat中的文字使用了UTF-8到导致.windows7教程 解决方法: 1.右键点击Bat批处理,选择编辑,然后打开,重新另存为 编码选择ANSI 即可.若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可; 2.下面是保存后文件; 3.打开运行后,乱码的问题解决了.

Win7系统执行bat批处理文件显示乱码该如何解决?

Win7系统执行bat批处理文件显示乱码该如何解决?   其实原因很简单,是由于bat中的文字使用了UTF-8到导致. 解决方法: 1.右键点击Bat批处理,选择编辑,然后打开,重新另存为 编码选择ANSI 即可.若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可; 2.下面是保存后文件; 3.打开运行后,乱码的问题解决了.

txt文档和bat批处理文件妙用

  你是否有曾经想象过自己成为一名IT精英,畅游代码的海洋,每天解读着别人所不能理解的世界,从代码中参悟真理看透一切真相,这会是一种什么滋味呢?也许你会说,我没学过代码,也当不成程序员,如何感受的到?其实如果仅仅是想体会一下编写程序代码实现某种自动化处理的快乐并不需要高深的理论知识和旷日持久的学习,txt这个平日里最常见的临时文档文件就能够帮助你,用它易于转化为bat批处理文件的特性足以让你发挥想象力,创造出属于自己的代码实现自己专属的小程序. 其实批处理文件的历史相当长,它在DOS时代就已经存

.bat批处理文件的写法

最近看了下cmd命令,发觉有些用起来挺方便的.于是决定把这些DOS命令整理出来,方便以后写.bat批处理文件. 1 先来看看.cmd,.bat是什么:     .bat是dos下的批处理文件:     .cmd是nt内核命令行环境的另一种批处理文件:          因此,二者是没有本质区别.从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚

Windows运行bat批处理文件时隐藏cmd命令提示符窗口的方法_DOS/BAT

我们在Windows中运行bat批处理文件时往往会弹出一个cmd命令提示符窗口,然后等一会儿cmd窗口就自动关闭了,有人会说,直接在bat批处理文件中加入echo off命令么好了,没错,echo off确实可以关闭cmd窗口,但是cmd窗口最初还是会弹出一下再消失,下面就教大家运行bat批处理文件时如何彻底隐藏cmd命令提示符窗口的方法. 方法就是通过vbs脚本来彻底隐藏执行bat批处理文件,将以下代码保存为.vbs文件,然后直接执行这个.vbs文件即可彻底隐藏cmd窗口了: Set ws =

脚本-新人贴,有关于循环遍历json格式的问题,求罩啊各位老大!

问题描述 新人贴,有关于循环遍历json格式的问题,求罩啊各位老大! {"curPage":"1","totalPage":"1","title":[{"id":22,"title":"<蘑菇战争>通关技巧防守篇","userid":3,"typeid":5,"pubtime"

使用.bat批处理文件实现内外网多IP地址的切换

 代码如下 复制代码 :: 使用.bat批处理文件实现内外网多IP地址的切换演示文件:IPchange.bat     :: 还可以增加3,4,5等多个IP地址,只要增加相应的if语句和label跳转标签即可     :: 首选DNS为谷歌的8.8.8.8,备用DNS为8.8.4.4     @Echo Off     TITLE IP设置     :start     cls     color 3f     :: 使用COLOR命令对控制台输出颜色进行更改     mode con cols