首页 > 代码库 > 批处理中for语句的简单使用

批处理中for语句的简单使用

        在进行测试的时候,我们希望测试磁盘的读写,于是想用一个简单的批处理来完成,批处理的copy功能是早就知道的,但怎么能让它多次执行,之前并没有用到过,于是想到for语句,或许for语句也能和在C语言中一样,进行多次循环。下面就将查找资料学到的知识总结如下:

        在批处理文件中,for循环的使用格式如下:

        for %%i in (command1) do command2

        其使用要素如下所述:

        1、for、in、do是for语句的关键字,缺一不可;

        2、%%i是for语句中对形式变量的引用,就算它在do后面的语句中没有参与语句的执行,在这里也是必须出现的,类似于C语言中for循环的i,只不过在C语言中,for循环可以省去这个控制条件,直接写成for(;;)的死循环;

        3、in之后,do之前的括号不能省略;

        4、command1表示字符串或变量,command2表示字符串、变量或语句;

        5、for后可以加/f、/r、/l、/d四个参数;

        6、for语句的形式变量i可以换成26个字母中的任意一个,区分大小写;

        7、in和do之间的command1表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;

        8、for语句依次提取command1中的每一个元素,把它的值赋予形式变量i,带到do后面的command2语句中参与命令的执行,当然,i也可以不参与命令的执行。当执行完一次do后面的语句后,再提取command1中的下一个元数据,再执行依次command2,如此循环,知道command1中的所有元素都已经被提取完毕,该for语句才宣告执行结束;

        根据上述规则,本文开头所说的任务可以用下面的语句执行

        for %%i in (a,b,c,d,e) do copy c:\test.doc d:\test.doc

        上面的语句是将C盘下的test.doc拷贝的d盘下,且连续拷贝5次。

        如果需要连续拷贝的次数很多,则采用上述方式写,command1会很长,程序会显得混乱,这时可以采用下面的方式:

        set str = a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

        for %%i in (%str%) do copy c:\test.doc d:test.doc

        上述语句共执行了26次拷贝操作

        上面的例子中,目的文件名都是相同的,这样下一次的复制会覆盖上一次复制的文件,如果不想覆盖,可以通过i来给文件名加个编号,如,写成如下形式

        for %%i in (%str%) do copy c:\test.doc d:\test_%%i.doc

        拷贝完之后目的文件名就变为test_a.doc、test_b.doc……,文件就不会被覆盖了。

        现将完整过程表述如下:

        1、首先新建一个记事本;

        2、在记事本中输入下面的代码:

             @echo  off

             set str = a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

             echo 正在复制……

             for %%i in (%str%) do copy c:\test.doc d:\test_%%i.doc

             echo 复制完成

             pause

        3、将文件名的后缀改为.bat,双击即可运行。

        注:需要注意的一个事情是,以上程序都是基于批处理文件而写的,如果在DOS命令下直接试用,需要将%%改为%。

         参考资料

        http://blog.csdn.net/wh_19910525/article/details/7912440

           

 

批处理中for语句的简单使用