批处理命令行for语句.docVIP

  • 3
  • 0
  • 约8.24千字
  • 约 14页
  • 2017-06-13 发布于北京
  • 举报
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”的文件,内容为上面的命令,然后运行。为了批处理执行完不退出,可在最后加上一条pausenull命令,这样能看到执行的结果。 要想通过cmd命令行执行的话,必须将%%换成%,即去掉一个%,如下: for %i in (你好) do echo %i 3、以下所有例子都是这样,若要在命令行提示符下执行,请将所有的%%改成一个%。 三、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是两个不同的变量。变量名前面必须是%,当在命令提示符下执行时,只用一个%;而在批处理程序中,必须用%%。 一行语句中,一般只需定义一个变量。使用/f参数中的tokens选项可以将集合中的元素分解成多个值,并自动定义新的变量对应这些值。这时语句中可以使用多个变量,通常按字母顺序命名,即第一个是%%a,那么后一个就用%%b。如果第一个是%%i,后一个就用%%j。依此类推。具体看后面的相关内容。 变量可以直接在do后面的命令中使用。每次使用的变量总数不超过52个。 3、集合:集合必须放在括号里。集合是一行文本,这行文本可能有几种类型,如“你好”只是一串字符;“c:\boot.ini”是一个文件;“dir /b”是一个命令。 (1)如果for语句中没有使用任何参数,对待集合文本的处理方式是: 第一步:如果集合文本用一对百分号(%)括起来,则系统在执行for循环时首先查找前面定义的变量中是否有与百分号内文本相同的,有则以该变量值替换掉集合文本,否则集合文本不变,进入第三步。 举例:设当前目录为D盘根目录,且根目录存在文件hello.txt、study.txt。 set stuname=hello.txt for %%i in (stuname) do echo %%i ;将显示stuname。 for %%i in (%ttuname%) do echo %%i ;将显示%ttuname%,因为没有这个变量。 for %%i in (%stuname%) do echo %%i ;将显示hello.txt,哪怕这个文件不存在,也仍然显示这个名字。 for %%i in (%stuname%) do echo %%~ti ;将显示hello.txt文件的最后修改日期。如果文件不存在,则不显示任何东西。这个命令只是验证这里是把hello.txt优先作为一个文件来处理的。 第二步:如果集合文本用一对半角双引号(以下在谈及标点符号时均为英文半角,不再说明)括起来了,则先去掉双引号,再看是否被百分号括着。如果引号内的文本用百分号括起来了,则查找是否存在相应的变量名。存在的话,用变量值替换掉变量,再用双引号括起来作为集合文本,否则集合文本不变,进入第三步。 举例:继续上面的例子 for %%i in (%stuname%) do echo %%~ti ;和不加双引号效果相同。 for %%i in (stuname) do echo %%i ;直接显示stuname。 for %%i in (stuname teachname) do echo %%i ;直接显示stuname teachname。这里是把引号内内

文档评论(0)

1亿VIP精品文档

相关文档