bat(续七)-for语句(循环结构)

for语句(循环结构)

  for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。

  1.无开关

  无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。其命令格式为:

  FOR %%variable IN (set) DO command

  其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%);set就是需要我们设定的循环范围,类似于C语言里面的循环变量;do后面的command就是循环所执行的命令,即循环体。

  无开关for语句举例:

  ===============================================

  @echo off

  for %%i in (a,"b c",d) do echo %%i

  pause>nul

  ===============================================

  2.开关/L

  含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:

  FOR /L %%variable IN (start,step,end) DO command

  其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。

  含开关/L的for语句举例(创建5个文件夹):

  ===============================================

  @echo off

  for /l %%i in (1,2,10) do md %%i

  pause

  ===============================================

  上例将新建5个文件夹,文件夹名称依次为1.3.5.7.9。可以发现,%%i的结束值并非end的值10,而是不大于end的一个数。

  3.开关/F

  含开关/F的for语句具有最强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII码文件,比如txt文档等。其命令格式为:

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

  其中,set为("string"、‘command‘、file-set)中的一个;options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一个或多个的组合。各选项的意义参见for /f。一般情况下,使用较多的是skip、tokens、delims三个选项。

  含开关/F的for语句举例:

  ===============================================

  @echo off

  echo **No Options:

  for /f %%a in ("1,2,10") do echo a=%%a

  echo **Options tokens ^& delims:

  for /f "tokens=1-3 delims=," %%a in ("1,2,10") do echo a=%%a b=%%b c=%%c

  pause

  ===============================================

  @echo off

  echo 本文件夹里面的文件有:

  for /f "skip=5 tokens=3* delims= " %%a in (‘dir‘) do (

  if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b

  )

  pause

  ===============================================

  @echo off

  echo 本文件夹里面的文件有:

  dir>c:\file.txt

  for /f "skip=5 tokens=3* delims= " %%a in (c:\file.txt) do (

  if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b

  )

  del c:\file.txt

  pause

  ===============================================

  对于后面的两个例子,其中options里面的delims= 是可以删除的,因为只要添加了/F开关系统就将delims的值默认为空格。

  符号字符串中的最后一个字符星号,

  那么额外的变量将在最后一个符号解析之后

  分配并接受行的保留文本。本例中也可以改为4,不过文件名中有空格的文件,只能显示空格以前部分

  同时我们也看到了,for语句的do后面的command也是可以分行的,只需要保证command的左括号和do在同一行就可以了。

  4.开关/D或/R

  含开关/D或/R的for语句是与目录或文件有关的命令,一般情况下很少使用。含开关/R的命令有时候被用于通过遍历文件夹来查找某一个文件或文件夹,故而列举此例。

  含开关/R的for语句举例(文件夹遍历):

  ===============================================

  @echo off

  setlocal enabledelayedexpansion

  FOR /R d: %%i IN (.) DO (

  set dd=%%i

  set "dd=!dd:~0,-1!"

  echo !dd!

  )

  pause

  exit

  ===============================================

  上例即可以罗列出D盘下的所有文件夹,其速度要比命令"tree d:"慢多了,不过其返回结果的实用性则远远超过了tree命令。

  一般情况下我们不推荐通过遍历文件夹来查找文件,特别是在查找某些程序(比如QQ.exe)的位置时。推荐通过reg命令查找注册表来查找QQ的路径,以保证查找效率。

  上例中也出现了几个新面孔,如setlocal、感叹号等。其中,感叹号其实就是变量百分号(%)的强化版。之所以要用!而不用%,是因为在for循环中,当一个变量被多次赋值时,%dd%所获取的仅仅是dd第一次被赋予的值;要想刷新dd的值,就必须首先通过命令"setlocal enabledelayedexpansion"来开启延迟变量开关,然后用!dd!来获取dd的值。

  for语句是批处理里面功能最强大、使用最普遍却又最难掌握的一套命令,这也是批处理菜鸟和批处理高手最明显的一个分水岭,一旦掌握了这套命令,那么你就离批处理达人不远了!

时间: 2024-08-09 10:34:39

bat(续七)-for语句(循环结构)的相关文章

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)一.Java标识符给类.接口.方法等命名的字符序列.1.标识符组成(1)英文字母大小写:(2)数字(不能以数字开头):(3)$和_.2.命名规则常量:每个单次字母均大写,若由多个单词组成,则每个单词间用下划线隔开.变量.方法:第一个单词全部小写,若由多个单词组成,则第一个单词全部小写,从第二个单词开始,每个单词首字母大写其他单词首字母小写.包:所有字母都小写,多级包采用域名反写,每级用"."隔开.类.接口:每个单词首字

房上的猫:for循环,跳转语句与循环结构,跳转语句进阶

一.for循环 1.定义:  for循环语句的主要作用是反复执行一段代码,直到满足一定条件为止 2.组成部分:  (1)初始部分:设置循环的初始状态  (2)循环体:重复执行的代码  (3)迭代部分:下一次循环开始前要执行的部分,在while循环结构中它作为循环体的一部分,进行循环次数的累加  (4)循环条件:判断是否继续循环的条件    注:在for循环中,这几个部分是必不可少的,不然循环就会出现错误 3.语法:  for(表达式1;表达式2;表达式3){   //循环体  }  解析:   

循环结构(二)

for循环结构的语法 for(表达式1;表达式2;表达式3){ 循环体 } for循环结构中3个表达式的含义 表达式1(赋值语句;循环结构的初始部分,为循环变量赋初值) 表达式2(条件语句;循环结构的循环条件) 表达式3(赋值语句,通常使用++或--运算符;循环结构的迭代部分,通常用来修改循环变量的值) for循环结构的执行顺序 (1)执行初始部分 (2)进行循环条件判断 (3)根据循环条件判断结果,如果为true,则执行循环体,如果为false,则退出循环,步骤(4).步骤(5)均不执行 (4

循环结构for,while,do..while

循环结构 一.循环结构的概述:在给定条件成立的时候,反复执行程序,直到条件不成立为止. 循环结构:循环一次又一次的执行相同的代码块 用while语句 用do-while语句 用for语句 二.循环结构的组成 1)循环控制条件 循环退出的主要依据,来控制循环 到底什么时候退出 2)循环体 循环的过程中重复执行的代码块 3)能够让循环结束的语句(递增.递减.真.假等) 能够让循环条件为假的依据,否则退出循环 While循环结构介绍及格式 1.while循环的格式 while(条件表达式){ 语句1:

Java历程-初学篇 Day07 循环结构2 for循环

一,格式 for(赋值语句//为循环变量赋初值;条件语句//循环结构的循环条件;赋值语句//迭代,修改循环变量的值){ //循环体; } 二,简单举例 for(int i=1;i<=10;i++){ System.out.print("第"+i+"遍循环"); } 三,for循环条件可以少吗? 当然可以,他可以放在for循环内或者外面 甚至可以写个死循环 for(;;){ System.out.println("死循环"); } 四,简单举

java基础 流程控制和条件语句,循环语句

顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用boolean表达式或boolean值作为选择条件,有三种结构形式: if翻译成中文,表示如果......,就干......., 第一种结构形式: if(boolean表达式) { 条件执行体 } if后面跟的{}表示一个整体-代码块,我们在这称为条件执行体,也就是说条件为true,就执行这一块代码块.

C#基础_选择结构和循环结构

关系运算符 > >= < <= !=  ==          对数值的运算 ,结果返回的是 bool值 逻辑运算符  &&  ||  !    && :逻辑与,前后都为TRUE 结果为TRUE    ||    : 逻辑或,有一个为TRUE,结果为TRUE    !  : 逻辑非,取反,TRUE取反是FALSE 三元运算符: 数据类型  变量名 = 表达式 ? 表达式1:表达式2; 三元运算过程: 如果表达式结果为TRUE,表达式1的结果赋值给变量

python第二课--分支结构与循环结构

if语句---分支结构 在Python中,要构造分支结构可以使用if.elif和else关键字.所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以).下面的例子中演示了如何构造一个分支结构. #用户身份验证 username = input("username:") password = input("password:") if username == "a

OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)

OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-while) 跳跃(discard, return, break, continue) 6.1函数定义   着色器是由一系列全局声明和函数定义组成的.函数声明规范如下: // prototype returnType functionName (type0 arg0, type1 arg1, ...,