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

DOS/BAT
每天按时 重启服务器 的批处理
Netsh 命令备份和恢复网络设置
批处理 Set 命令详解 让你理解set命令
cd命令 目录跳转
cmd tree命令 以树形格式罗列文件
dos 内容重定向符 >和>>
cmd if条件 条件判断
cmd goto命令 流程跳转
cmd copy命令 文件复制
cmd del命令 文件删除
cmd ren命令 重命名文件(夹)
cmd md命令 创建文件夹
cmd rd命令 删除文件夹
cmd move命令 移动文件(夹)
字符串查找 cmd find命令
常用的批处理实用技巧
批处理 添加隐藏用户代码
服务器 安全设置 批处理
WIN2003 服务器安全配置批处理文件
批处理 实现定时关机、注销、重启、锁定等功能

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 201 ::
收藏到网摘: 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命令各类颜色代码