批处理 数码雨代码解释

 更新时间:2009年03月13日 22:55:49   作者:  
详细解释批处理的一些说明,推荐新手跟老手学习。
做了一个批处理的数码雨,老题目了

主要给新手看
主要用于了解批处理的一下知识
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命令各类颜色代码
 

相关文章

  • 用BAT实时读取某个文件目录下文件数(包括子目录)

    用BAT实时读取某个文件目录下文件数(包括子目录)

    实时取得某个文件目录下文件数,我尝试了好多方法,最后发现其实用BAT文件还是比较方便的,比如指定几个文件目录,然后分别把他们的文件数目统计出来(包括子目录),把值放入指定的文本文件,为了实时读取,我做了循环
    2013-05-05
  • 使用FTP下载目录,即FTP命令批量自动下载的bat文件

    使用FTP下载目录,即FTP命令批量自动下载的bat文件

    使用FTP下载目录,即FTP命令批量自动下载的bat文件...
    2007-03-03
  • 教你编写bat脚本Windows批处理

    教你编写bat脚本Windows批处理

    这篇文章主要介绍了bat脚本Windows批处理的相关知识,批处理脚本文件具有特殊的扩展名BAT或CMD,本文介绍了常见用途及命令技巧,需要的朋友可以参考下
    2022-04-04
  • bat批处理批量修改文件扩展名的方法

    bat批处理批量修改文件扩展名的方法

    这篇文章主要介绍了bat批处理批量修改文件扩展名的方法,只需要一句简单的命令即可实现,需要的朋友可以参考下
    2014-06-06
  • 批处理中常用的符号总结

    批处理中常用的符号总结

    这些都是批处理中常用的 符号
    2008-05-05
  • bat批处理位运算实例代码

    bat批处理位运算实例代码

    发现很多新手对于批处理中set/a的位运算的概念有点模糊,我也是,什么异、或、与、逻辑移位,看的云里雾里,头脑发胀,于是就有了下面的代码
    2021-09-09
  • 批量列出所有文件名的批处理

    批量列出所有文件名的批处理

    这个批处理用来列出当前文件夹下的所有文件名。
    2010-07-07
  • BAT文件语法和技巧(bat文件的编写及使用)

    BAT文件语法和技巧(bat文件的编写及使用)

    批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件
    2006-12-12
  • 让批处理被wsh解析的代码

    让批处理被wsh解析的代码

    想了很久,发现了一种不用临时文件,在批处理中直接执行 vbs 的方法 这个方法不错 可以方便调用两种脚本语言
    2008-06-06
  • cmd批量ping命令的实现

    cmd批量ping命令的实现

    本文主要介绍了cmd批量ping命令的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论