当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 批处理 数码雨代码解释

DOS/BAT
批处理制作照片整理器
可以生成SLEEP.EXE的延时命令的bat文件
用bat批量创建文件夹
bat批处理实现的创建10个文件夹,文件夹再包含5个空文件夹
bat延时执行命令的另一种方法
windows服务操作之删除服务 批处理实现
批处理 远程控制
使用批处理修改web打印设置笔记 适用于IE
批处理 结束麦咖啡进程的代码
cmd fsutil 命令新建空文本文件
cmd Tasklist与Tskill管理Windows系统进程
批处理 正则表达式(findstr) 整理
bat 文件 学习使用指南
for 语句从入门到精通
dos 目录跳转 cd
tree 以树形格式罗列文件
dos 内容重定向
dos if 条件判断
dos 流程跳转 goto
dos 文件复制 copy命令

DOS/BAT 中的 批处理 数码雨代码解释


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 210 ::
收藏到网摘: n/a

详细解释批处理的一些说明,推荐新手跟老手学习。 做了一个批处理的数码雨,老题目了
主要给新手看
主要用于了解批处理的一下知识
1.随机变量的使用
2.变量的叠加
下面是源代码:
复制代码 代码如下:

@echo off
color 0a
:start
set num=0
set "echos= "
:num
set /a a1=%random%%%3
if "%a1%" == "1" set "a1= "
if "%a1%" == "2" set "a1= "
if "%a1%" == "0" set /a a1=%random%%%2
set echos=%echos%%a1%
set /a num=%num%+1
if "%num%" == "75" echo %echos%&&goto :start
goto :num

我来详细解释一下
复制代码 代码如下:

@echo off
::关闭回显(不用说了吧)
color 0a
::这句的意思是改变批处理的字体颜色,0a就是颜色代码(具体可以看Color命令)
:start
set num=0
::定义(重新定义)num的变量,值为0(我们用这个变量来计算批处理循环的次数)
set "echos= "
::定义(重新定义)echos的变量,值为一个空格
:num
set /a a1=%random%%%3
::这句就很重要了,这句可以说是整个数码雨代码的核心
::这句的意思是定义一个随机数,值在"3"以下
::要限制随机数的值,必须用set命令的/a开关
::比如我想定义一个num的变量,这个变量是随机数,切必须小于20,那代码就是
::set /a num=%random%%%20
::以上是完整的代码,如果没有使用/a开关写成了set num=%random%%%20
::那么就会出现错误
if "%a1%" == "1" set "a1= "
::这句意思是如果变量a1(也就是上一句的随机变量)值是1的话那么a1的值就是一个空格
::Ps(这里我有必要说一下)
::我们程序的目的是模拟数码雨
::大家也许也看过数码雨,数码雨不是全是0和1,中间也是有空隙的,这句就是为了达到这个目的
::下面一句也是同样的目的
::最后还有一点要提
::不知大家发现没有我们之前的语句我没有用双引号如set num=0
::而这句 set "a1= " 却用了双引号,这是为什么呢
::其实,之前的语句set num=0,也可以改为set "num=0"
::这样似乎显得比较标准,是不是 set "a1= " 也可以改为 set a1= 呢
::答案是"No"
::因为set a1=这句就算你在语句后面加入了空格,批处理也不会去识别
::导致了a1的值为空,在批处理中,变量的值是不能为空的,所以我们用空格代替
::就写成 set "a1= "

if "%a1%" == "2" set "a1= "
::如果a1值为2,那么a1的值就是一个空格

if "%a1%" == "0" set /a a1=%random%%%2
::这句的意思是,如果随机变量a1的值为0,那么a1的值将随机取一个2以下的整数
::换句话说就是如果a1值是0,那么a1就随机选0和1两个数
set "echos=%echos%%a1%"
::这里就是我所说的变量叠加
::之所以用引号是因为a1也有可能是空格
::其次就是echos=%echos% .. 我们现在只看这段
::这句话的意思是定义echos变量为 变量echos和变量a1的 值
::是不是有些晕
::我们在程序开始时就把echos变量定为一个空格了
::所以这次定义就吧echos定义为 一个空格+变量a1
::是不是清晰了点?
::我们用实例来吧
::变量echos现在是一个空格我们用[空格]代替
::我们再假设变量a1是数字1
::那么这次变量就是把 echos定义为 [空格]+1
::所以语句执行后echos 的值就是 一个空格然后是数字1
::对吧...清晰了吧?这句其实就是变量叠加
::如果语句继续执行,那么echos 的值是 "[空格]1" 吧?
::然后程序再次执行a1的值假设是数字2
::那么set "echos=%echos%%a1%"的意思就是
::定义变量echos的值为 "[空格]1" + 数字2,也就是 "[空格]12"
::.....
set /a num=%num%+1
::这句意思是变量num的值加一(也就是循环了一次)
if "%num%" == "75" echo %echos%&&goto :start
::当循环执行以上语句了75次后显示一次叠加的变量echos
::换句话说就是循环以上语句75次后显示变量echos

goto :num
::跳转到标签num

附Color命令各类颜色代码