Loops 批处理文件中for循环的问题
我试图批量创建一个for循环,使用1-100的模数进行一些计算,然后返回整个数字集的平均值。我想在屏幕上打印这个平均值,并将其输出到一个名为output的文件中,这就是我所拥有的,但它似乎无法正常工作。有什么建议吗?谢谢你Loops 批处理文件中for循环的问题,loops,batch-file,for-loop,Loops,Batch File,For Loop,我试图批量创建一个for循环,使用1-100的模数进行一些计算,然后返回整个数字集的平均值。我想在屏幕上打印这个平均值,并将其输出到一个名为output的文件中,这就是我所拥有的,但它似乎无法正常工作。有什么建议吗?谢谢你 @echo off setlocal EnabledDelayedExpansion for /l %%i in (1,1,100) do ( set /a EXPR = %%i %% 5 set /a EXPR2 = %EXPR+3 set /a T
@echo off
setlocal EnabledDelayedExpansion
for /l %%i in (1,1,100) do (
set /a EXPR = %%i %% 5
set /a EXPR2 = %EXPR+3
set /a TOTAL = TOTAL+%EXPR2
)
set /a AVG = %TOTAL/100
echo Your average is %AVG
echo Your average is %AVG >> output.txt
这是你想要的吗
在EnableDelayedExpansion中增加一个
d
(顺便说一句,set/a
也可以在没有延迟扩展的情况下工作)。经典错误是让空格包围变量赋值。在批处理脚本中,结果是空格成为变量名的一部分。除了标记和命令行参数外,变量的两边都用%
括起来。你能编辑你的问题并用一个小例子解释一下你想如何逐步计算这个平均值吗步骤?请参阅setlocal/?
和获取/?
以了解代码无法工作的原因。除此之外,你的变量都错了。它是%Var%
而不是%Var
。不能读取%AVG
这样的变量,必须在回送中读取%AVG%
;例如,在set/A
中,不要声明%
符号,而是使用set/A EXPR2=EXP+3
;它被称为EnableDelayedExpansion
(而不是Enable
**d
**),尽管这里不需要延迟扩展;最后,您可以编写set/A TOTAL+=EXPR2
而不是set/A TOTAL=TOTAL+EXPR2
(意思是一样的)…谢谢大家,我是批处理新手,所以语法让我有些不适应。对于set/A
,=/code>周围的空格不重要(与您描述的标准-set
,即它们成为变量名和/或值的一部分相反)…非常感谢。这帮助我更好地理解了它。问题解决了。
@echo off
setlocal EnableDelayedExpansion
for /l %%i in (1,1,100) do (
set /a EXPR=%%i %% 5
set /a EXPR2=EXPR+3
set /a TOTAL=TOTAL+EXPR2
)
set /a AVG=TOTAL/100
echo Your average is %AVG%
echo Your average is %AVG%