Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理进程计数器_Batch File_Cmd - Fatal编程技术网

Batch file 批处理进程计数器

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

我正在处理一个进度计数器,但代码中有什么错误?这始终显示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

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

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