你如何在Windowsbatch file中循环?

Windowsbatch file中FOR循环的语法是什么?

FOR %%A IN (list) DO command parameters 

列表是由空格,逗号或分号分隔的任何元素的列表。

命令可以是任何内部或外部命令,batch file,甚至是OS / 2和NT中的命令列表

参数包含命令的命令行参数。 在这个例子中,命令将被执行一次列表中的每个元素,如果指定使用参数。

一个特殊types的参数(甚至命令)是%% A,它将被列表中的每个元素连续地replace。

从FOR循环

如果你想做点什么,你可以这样做:

示例(x = 200):

 FOR /L %%A IN (1,1,200) DO ( ECHO %%A ) 

1,1,200指的是:

  • 开始= 1
  • 每步增量= 1
  • End = 200

types:

 for /? 

你会得到几页的帮助文字。

有条件地执行几次命令。

  • 语法-FOR-文件

     FOR %%parameter IN (set) DO command 
  • 语法-File-Files-Rooted at Path

     FOR /R [[drive:]path] %%parameter IN (set) DO command 
  • 语法-FOR-文件夹

     FOR /D %%parameter IN (folder_set) DO command 
  • syntax-FOR-List of numbers

     FOR /L %%parameter IN (start,step,end) DO command 
  • 语法的FOR文件内容

     FOR /F ["options"] %%parameter IN (filenameset) DO command 

    要么

     FOR /F ["options"] %%parameter IN ("Text string to process") DO command 
  • 语法 – 命令结果

     FOR /F ["options"] %%parameter IN ('command to process') DO command 

  • 取一组数据
  • 使参数%%G等于该数据的某个部分
  • 执行一个命令(可选地使用参数作为命令的一部分)。
  • – >重复每个数据项

如果在命令行而不是批处理程序中使用FOR命令,则只需使用百分号: %G而不是%%G

FOR参数

  • 第一个参数必须用单个字符来定义,例如字母G.

  • FOR %%G IN

    在FOR循环的每次迭代中,评估IN ( ....)子句并将%%G设置为不同的值

    如果这个子句产生一个单一的值,那么%% G被设置为等于该值,并执行该命令。

    如果子句导致多个值,那么隐式地定义额外的参数来保存每个参数。 这些按字母顺序自动分配%%H %%I %%J …(隐式参数定义)

    如果参数引用文件,则可以使用增强型variables引用来提取文件名/path/date/大小。

    您当然可以select%%G以外的其他字母。 但它是一个不错的select,因为它不会与任何path名格式字母(a,d,f,n,p,s,t,x)相冲突,并提供最长的非冲突字母作为隐式参数。

FOR会给你任何有关FOR循环的信息,包括正确使用的例子。

试试这个代码:

 @echo off color 02 set num1=0 set num2=1 set terminator=5 :loop set /a num1= %num1% + %num2% if %num1%==%terminator% goto close goto open :close echo %num1% pause exit :open echo %num1% goto loop 

num1是要递增的数字, num2是添加到num1的值,终止符是num1将结束的值。 您可以在此语句中为终止符指示不同的值( if %num1%==%terminator% goto close )。 这是布尔expression式goto close是过程,如果布尔值为true并且打开是布尔值为false的过程。

 @echo off echo. set /p num1=Enter Prelim: echo. set /p num2=Enter Midterm: echo. set /p num3=Enter Semi: echo. set /p num4=Enter Finals: echo. set /a ans=%num1%+%num2%+%num3%+%num4% set /a avg=%ans%/4 ECHO %avg% if %avg%>=`95` goto true :true echo The two numbers you entered were the same. echo. pause exit 

FOR /? 帮助文档:

FOR%variablesIN(设置)DO命令[命令参数]

%variables指定单个字母的可replace参数。
(set)指定一组一个或多个文件。 可以使用通配符。 command指定为每个文件执行的命令。
命令参数
指定指定命令的参数或开关。

要在批处理程序中使用FOR命令,请改为指定%%variables
%variables。 variables名称区分大小写,所以%i是不同的
从%I。

如果启用了命令扩展,那么下面的附加
FOR命令的forms是支持的:

FOR / D%variablesIN(设置)DO命令[命令参数]

 If set contains wildcards, then specifies to match against directory names instead of file names. 

FOR / R [[drive:]path]%variablesIN(设置)DO命令[命令参数]

 Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree. 

FOR / L%variablesIN(start,step,end)DO命令[command-parameters]

 The set is a sequence of numbers from start to end, by step amount. So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would generate the sequence (5 4 3 2 1)