部分解释一下可能就能理解了,建议在cmd命令行看看 set/? 帮助信息可以初步看懂一部分
%m:~0,7% 表示取m值的左边第0个之后开始7位字符 且可简写为 %m:~,7%
%m:~7% 表示取第7位之后的所有字符 (注意与上一行的简写形式不同)
%m:~0,-3%表示第0个之后至右边留3个字符为止,且可简写为 %m:~,-3%
%m:~-3% 表示取右边3字符,比如它里面的
set g=%m:~0,-3%.和set g=%g%%m:~-3,3%分别可简写为
set g=%m:~,-3%和set g=%g%%m:~-3%
call :loop "1048576" 表示以"1048576"为第一个参数调用 :loop 处代码直至结束再返回此句继续后续代码 调用时以%1 表示此参数,如写为%~1 表示此参数若有引号去掉它
cmd作除法的结果是取整的如计算 2000/1024=1
无参数的set g=,,,,, 表示单纯赋值给变量g ,加参数/a 则进行计算后赋值
正如你所说的计算有上限问题, 但变量能进行拆开或串合 体会一下:loop 处的代码 是在模仿小学生做竖式算法