如何在Windows批处理文件中循环?

时间:2009-08-31 04:32:11

标签: batch-file

Windows批处理文件中FOR循环的语法是什么?

8 个答案:

答案 0 :(得分:181)

如果你想做x次,你可以这样做:

示例(x = 200):

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

1,1,200表示:

  • 开始= 1
  • 每步增量= 1
  • 结束= 200

答案 1 :(得分:98)

FOR %%A IN (list) DO command parameters

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

命令可以是任何内部或外部命令,批处理文件,甚至 - 在OS / 2和NT中 - 命令列表

参数包含命令的命令行参数。 在此示例中,将使用参数(如果已指定)对列表中的每个元素执行一次命令。

一种特殊类型的参数(甚至命令)是%% A,它将被列表中的每个元素连续替换。

来自FOR loops

答案 2 :(得分:51)

类型:

for /?

您将获得几页帮助文本。

答案 3 :(得分:27)

有条件地多次执行命令。

  • 语法-FOR-文件

    foldl (\x y -> 10*x+y) 0  [2,3,4,5]
    
  • syntax-FOR-Files-Rooted in Path

    FOR %%parameter IN (set) DO command 
    
  • 语法-FOR-文件夹

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • syntax-FOR-Numbers of list

    FOR /D %%parameter IN (folder_set) DO command 
    
  • syntax-FOR-File contents

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

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    
  • syntax-FOR-Command结果

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

  • 获取一组数据
  • 使FOR参数FOR /F ["options"] %%parameter IN ('command to process') DO command 等于该数据的某些部分
  • 执行命令(可选择使用参数作为命令的一部分)。
  • - >对每个数据项重复

如果您在命令行而不是批处理程序中使用FOR命令,请仅使用一个百分号:%%G而不是%G

FOR参数

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

  • %%G ...

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

    如果此子句产生单个值,则将%% G设置为等于该值并执行命令。

    如果子句导致多个值,则隐式定义额外参数以保存每个参数。它们按字母顺序%%G ...(隐式参数定义)

    自动分配

    如果参数引用文件,则可以使用增强变量引用来提取文件名/路径/日期/大小。

    您当然可以选择%%H %%I %%J以外的任何字母。但它是一个很好的选择,因为它不会与任何路径名格式字母(a,d,f,n,p,s,t,x)冲突,并提供最长的非冲突字母用作隐式参数

答案 4 :(得分:16)

FOR将为您提供有关FOR循环的任何信息,包括正确使用的示例。

答案 5 :(得分:13)

试试这段代码:

@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)。这是布尔表达式goto close是boolean为true的过程,如果boolean为false,则goto open是进程。

答案 6 :(得分:5)

@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

答案 7 :(得分:5)

来自FOR /?帮助文档:

FOR%变量IN(设置)DO命令[命令参数]

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

要在批处理程序中使用FOR命令,请指定%%变量而不是
%变量。变量名称区分大小写,因此%i不同 来自%I。

如果启用了命令扩展,则增加以下内容 支持FOR命令的形式:

FOR / D%变量IN(设置)DO命令[命令参数]

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

FOR / R [[drive:] path]%变量IN(设置)DO命令[command-parameters]

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%变量IN(开始,步骤,结束)DO命令[命令参数]

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)