- ·上一篇文章:基础的批处理读英文程序代码
- ·下一篇文章:批处理全盘查找文件,支持通配符
- ·百度中搜索更多的关于“模拟WINDOWS开机进度条的批处理的代码解释”相关内容
- ·谷歌中搜索更多的关于“模拟WINDOWS开机进度条的批处理的代码解释”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
模拟WINDOWS开机进度条的批处理的代码解释
@echo off &title DOS资源站 www.cmdos.net
setlocal enabledelayedexpansion
set /a b=81
set a=">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>================================================================================"
:back
cls
for /l %%i in (1,1,20) do @echo.
echo Loading Windows 2000...
set /a b-=1
echo !a:~%b%,80!
if !b! == 1 goto :eof
call :delay 80
goto back
:delay
set /a num=num + 1
if %num% geq %1 (set num=) && goto :eof
goto delay
前段时间在批处理转载区发了一个模拟2K开机进度条的批处理,现在以我的理解方法给大家解释一下,有错误难免,还请大家多多指点!
代码如上!
看下面
@echo off
嗯,这个就不用解释啦,屏蔽屏幕上的命令
setlocal enabledelayedexpansion
这个是开启变量延迟,具体说明请查看 setlocal/?
提一下,当开启了变量延迟后,当要用到变量延迟是地方,两个变量用两!号给括起来,而非%
set /a b=81
设置变量b的值为81,这个/a参数在这里没有什么意义,可以不用,它是执行计算的意思
set a=">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>================================================================================"
这也是一样设置变量a的值,这个引号是因为有特殊字符
例:
set aa=>>
此时不应有 >。
看,它就会出错
而
set bb=">>"
再
echo %bb%
">>"
那,出来啦,这就是引号的一个好的用法
:back
cls
上面二个就不用说啦,一个是标签名,另一个是清除屏幕
for /l %%i in (1,1,20) do @echo.
这个是在屏幕上显示20行空行,就是相当于20个echo.用&符号给连起来的意思一样
括号中的数字说明该集表示以增量形式从1到20的一个数字序列
因此,(1,1,3) 将产生序列 1 2 3,(3,-1,1) 将产生 序列 (3 2 1)
echo Loading Windows 2000...
这个也不用解释了吧,就是在屏幕上显示后面的信息
set /a b-=1
嗯,这个是设置变量b等于81-1,也就是等于80,每循环一次就减一次
set /a b-=1 也就是等于 set /a b=%b%-1
学过编程语言的一看就知道啦
set /a b+=1 也就是等于 set /a b=%b%+1
同理还有很多
echo !a:~%b%,80!
这里就是显示变量a的信息,上面有说set /a b-=1,己经定义了变量b的值为80,这里就是显示变量
a里的第80个字符开始的80个字符,然后利用goto来跳转到前面,经过CLS清屏,set /a b-=1
处理变量b的值,注意这里变量b己经减了1就是80了,这里再减一就变成79了。然后又到这
里 echo !a:~%b%,80!,就是显示变量a里的第79个字符开始的80个字符,它的工作原理就是这样,
怎样,明白了吧各位!
if !b! == 1 goto :eof
注意看这一句,就是当变量b的值经过一系列运算后变成1后,程序就退出
GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前
批脚本文件的结尾,不定义就退出程序!
call :delay 80
这个是调用子标签delay 把80作为它的第一个参数
CALL 命令现在将卷标当作 CALL 的目标,接受语法是:
CALL:label arguments
一个新的批文件上下文由指定的参数所创建,就是说卷标被指定后
您必须通过跳转到批脚本文件末两次(goto :eof),读到第一次文件
末时,控制会回到 CALL 语句的紧后面。第二次会退出批脚本。
:delay
set /a num=num + 1
if %num% geq %1 (set num=) && goto :eof
goto delay
这是子标签delay,放在一起来解释好点!
先是计算变量num的值为%num%+1,它这里前面没有定义变量num,所以
变量num的值就是1啦,每循环一次就加一次,然后当变量num的值大于或
等于80时就清空变量的值,再返回主程序!前面有说当变量num的值大
于或等于80时就清空变量的值,那么不等于或大于80时就跳转到标签
delay继续!说白啦,它就是在做延时处理,直接用ping -n 1 127.1>nul
来处理作者可能觉的不理想吧!
在IF里面有如下比较运算符
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

