Batch file 批处理进程计数器
我正在处理一个进度计数器,但代码中有什么错误?这始终显示0%并关闭应用程序Batch file 批处理进程计数器,batch-file,cmd,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 exe
@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
警告:变量定义的一个常见问题是变量名中包含空格:
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
在这种情况下,不需要使用(当然可以使用)
%i%
来获取变量值。如前所述,set/a
使用它自己的解析器,它将解析变量引用,检索相应的值。实际使用set/a
是唯一一次在变量名和赋值运算符之间留有空格,而不影响实际的变量名。@Squashman,我的错。答案已更新,以暴露指示的行为。无论如何,我认为最好保持空间移除建议。
set /a percent= i * 100 / limit