在Windows批处理文件中,FOR循环的语法是什么?
在Windows批处理文件中,FOR循环的语法是什么?
如果你想做某事x次,你可以这样做:
例如(x = 200):
FOR /L %%A IN (1,1,200) DO (
ECHO %%A
)
1,1,200
的意思是:
FOR %%A IN (list) DO command parameters
list 是由空格、逗号或分号分隔的任意元素列表。
command 可以是任何内部或外部命令、批处理文件,甚至在 OS/2 和 NT 中可以是一系列命令。
parameters 包含 command 的命令行参数。 在这个例子中,command 将针对列表中的每个元素执行一次,如果指定了参数,则使用参数执行。
一种特殊类型的参数(或甚至是命令)是 %%A,它将被连续地替换为列表中的每个元素。
来自FOR 循环
FOR /L %x IN (1,1,100) DO ...
- Joeyfor
循环中包含多行,请在 [参数]
周围放置括号。 - Frank Bryce类型:
for /?
然后你会得到几页帮助文本。
syntax-FOR-Files
FOR %%parameter IN (set) DO command
syntax-FOR-Files-Rooted at Path
FOR /R [[drive:]path] %%parameter IN (set) DO command
syntax-FOR-Folders
FOR /D %%parameter IN (folder_set) DO command
syntax-FOR-List of numbers
FOR /L %%parameter IN (start,step,end) DO command
syntax-FOR-File contents
FOR /F ["options"] %%parameter IN (filenameset) DO command
or
FOR /F ["options"] %%parameter IN ("Text string to process") DO command
syntax-FOR-Command Results
FOR /F ["options"] %%parameter IN ('command to process') DO command
IT
%%G
设置为该数据的某个部分如果您在命令行中使用 FOR 命令而不是在批处理程序中使用,请只使用一个百分号:%G
而不是 %%G
。
FOR 参数
第一个参数必须使用单个字符定义,例如字母 G。
FOR %%G IN
...
在 FOR 循环的每次迭代中,IN (....)
子句被评估,并将 %%G
设置为不同的值。
如果此子句导致单个值,则将 %%G 设置为该值并执行命令。
如果该子句导致多个值,则会隐式定义额外的参数以保存每个值。这些参数将按字母顺序自动分配 %%H %%I %%J
...(隐式参数定义)
如果参数引用文件,则可以使用增强的变量引用来提取文件名/路径/日期/大小。
当然,除了 %%G
之外,您当然可以选择字母表中的任何字母。但是它是一个很好的选择,因为它不会与任何路径名格式字母(a、d、f、n、p、s、t、x)冲突,并提供最长的非冲突字母序列以用作隐式参数。
%a%
是指一个普通文件的名称吗?这个格式让人很难帮助你。请阅读[ask]后,随时提出新问题。 - J. Chomel例如在引用中的%%~fG中,%%G是FOR参数,而~f是参数扩展。
我明白了(在这里)[https://ss64.com/nt/syntax-args.html],感谢你。干杯,伙计。 - jumping_monkey尝试使用这段代码:
@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
上的值,terminator 是 num1
结束的值。在这个语句中,你可以指定不同的终止值 (if %num1%==%terminator% goto close
)。如果布尔表达式为 true,则该过程为 goto close,如果布尔表达式为 false,则该过程为 goto open。
@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 %variable IN (set) DO command [command-parameters]
%variable 指定一个单个字母可替换的参数。
(set) 指定一个或多个文件的集合。可以使用通配符。
command 指定要针对每个文件执行的命令。
command-parameters
指定指定命令的参数或开关。
要在批处理程序中使用 FOR 命令,请指定 %%variable 而不是 %variable。变量名称区分大小写,因此 %i 与 %I 不同。
如果启用了命令扩展,则支持以下其他 FOR 命令形式:
FOR /D %variable IN (set) DO command [command-parameters]
If set contains wildcards, then specifies to match against directory
names instead of file names.
FOR /R [[驱动器:]路径] %变量 IN (集合) 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命令可以迭代数字,%variable定义了一个可替换的参数,在每次迭代中,该参数被设置为从start到end以step为步长的下一个数字。当循环执行时,可以对每个数字执行一个命令。
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)