批量进度计数器

时间:2014-12-12 12:42:02

标签: batch-file cmd

我正在进行进度计数器,但代码中有什么问题?这始终显示0%并关闭应用程序。

@echo off
set /a i=0
set /a limit=100
set /a percent=0
echo %percent% percent
:execute
set /a i+=1
ping 127.0.0.1 -n 1 > nul
set /a percent = %i%/%limit%
cls
echo %percent% percent
if %i% LSS %limit% (goto execute) else exit

1 个答案:

答案 0 :(得分:2)

警告:变量定义的常见问题是变量名中包含空格:

set /a percent = %i%/%limit%
              ^
              This space "can" be included in the name of the variable

虽然set /a使用自己的解析器并将丢弃指定的空间,但set命令备选方案的其余部分将创建名称中带有空格的变量。 "更好/更安全/推荐" 删除空间。

问题:批处理算法的工作原理。所有算术运算符只返回整数值。

set /a percent= %i% / %limit%
                    ^
                    Batch arithmetic handle only integers
                    i/limit will be always 0 for any i < limit

更改为

set /a percent= i * 100 / limit 

在这种情况下,不需要使用(当然可以使用{}}来获取变量值。如上所述,%i%使用自己的解析器,它将解析检索到适当值的变量引用。