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

DOS/BAT
Bootcfg 配置、查询或更改 Boot.ini 文件设置
Assoc显示或修改文件名扩展关联
at计划在指定时间和日期在计算机上运行命令和程序
使用 atmadm 来显示 ATM 适配器上传入和传出呼叫的统计信息
Attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性
可以使用的批处理参数集合
批处理下使用筛选器的函数
Getmac返回计算机中所有网卡的媒体访问控制 (MAC) 地址以及每个地址的网络协议列表
Cacls 显示或修改任意访问控制列表 (DACL) 文件
Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
Chcp 显示活动控制台代码页数量,或更改该控制台的活动控制台代码页
Chdir (Cd) 显示当前目录的名称,或更改当前的文件夹
Chkntfs 显示或指定在启动计算机时计划的自动系统检查是否在 FAT、FAT32 或者 NTFS 卷上运行。
Cipher 在 NTFS 卷上显示或改变文件的加密
Cls 清除命令提示符窗口
Cmd 启动命令解释器 Cmd.exe 的新实例
Cmstp 安装或删除“连接管理器”服务配置文件
color 对于当前会话,更改命令提示窗口的前景和背景色
配置命令提示符的方法
Comp 逐字节地比较两个文件或几组文件的内容

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


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