批處理 數(shù)碼雨代碼解釋
更新時(shí)間:2009年03月13日 22:55:49 作者:
詳細(xì)解釋批處理的一些說(shuō)明,推薦新手跟老手學(xué)習(xí)。
做了一個(gè)批處理的數(shù)碼雨,老題目了
主要給新手看
主要用于了解批處理的一下知識(shí)
1.隨機(jī)變量的使用
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
我來(lái)詳細(xì)解釋一下
@echo off
::關(guān)閉回顯(不用說(shuō)了吧)
color 0a
::這句的意思是改變批處理的字體顏色,0a就是顏色代碼(具體可以看Color命令)
:start
set num=0
::定義(重新定義)num的變量,值為0(我們用這個(gè)變量來(lái)計(jì)算批處理循環(huán)的次數(shù))
set "echos= "
::定義(重新定義)echos的變量,值為一個(gè)空格
:num
set /a a1=%random%%%3
::這句就很重要了,這句可以說(shuō)是整個(gè)數(shù)碼雨代碼的核心
::這句的意思是定義一個(gè)隨機(jī)數(shù),值在"3"以下
::要限制隨機(jī)數(shù)的值,必須用set命令的/a開(kāi)關(guān)
::比如我想定義一個(gè)num的變量,這個(gè)變量是隨機(jī)數(shù),切必須小于20,那代碼就是
::set /a num=%random%%%20
::以上是完整的代碼,如果沒(méi)有使用/a開(kāi)關(guān)寫(xiě)成了set num=%random%%%20
::那么就會(huì)出現(xiàn)錯(cuò)誤
if "%a1%" == "1" set "a1= "
::這句意思是如果變量a1(也就是上一句的隨機(jī)變量)值是1的話(huà)那么a1的值就是一個(gè)空格
::Ps(這里我有必要說(shuō)一下)
::我們程序的目的是模擬數(shù)碼雨
::大家也許也看過(guò)數(shù)碼雨,數(shù)碼雨不是全是0和1,中間也是有空隙的,這句就是為了達(dá)到這個(gè)目的
::下面一句也是同樣的目的
::最后還有一點(diǎn)要提
::不知大家發(fā)現(xiàn)沒(méi)有我們之前的語(yǔ)句我沒(méi)有用雙引號(hào)如set num=0
::而這句 set "a1= " 卻用了雙引號(hào),這是為什么呢
::其實(shí),之前的語(yǔ)句set num=0,也可以改為set "num=0"
::這樣似乎顯得比較標(biāo)準(zhǔn),是不是 set "a1= " 也可以改為 set a1= 呢
::答案是"No"
::因?yàn)閟et a1=這句就算你在語(yǔ)句后面加入了空格,批處理也不會(huì)去識(shí)別
::導(dǎo)致了a1的值為空,在批處理中,變量的值是不能為空的,所以我們用空格代替
::就寫(xiě)成 set "a1= "
if "%a1%" == "2" set "a1= "
::如果a1值為2,那么a1的值就是一個(gè)空格
if "%a1%" == "0" set /a a1=%random%%%2
::這句的意思是,如果隨機(jī)變量a1的值為0,那么a1的值將隨機(jī)取一個(gè)2以下的整數(shù)
::換句話(huà)說(shuō)就是如果a1值是0,那么a1就隨機(jī)選0和1兩個(gè)數(shù)
set "echos=%echos%%a1%"
::這里就是我所說(shuō)的變量疊加
::之所以用引號(hào)是因?yàn)閍1也有可能是空格
::其次就是echos=%echos% .. 我們現(xiàn)在只看這段
::這句話(huà)的意思是定義echos變量為 變量echos和變量a1的 值
::是不是有些暈
::我們?cè)诔绦蜷_(kāi)始時(shí)就把echos變量定為一個(gè)空格了
::所以這次定義就吧echos定義為 一個(gè)空格+變量a1
::是不是清晰了點(diǎn)?
::我們用實(shí)例來(lái)吧
::變量echos現(xiàn)在是一個(gè)空格我們用[空格]代替
::我們?cè)偌僭O(shè)變量a1是數(shù)字1
::那么這次變量就是把 echos定義為 [空格]+1
::所以語(yǔ)句執(zhí)行后echos 的值就是 一個(gè)空格然后是數(shù)字1
::對(duì)吧...清晰了吧?這句其實(shí)就是變量疊加
::如果語(yǔ)句繼續(xù)執(zhí)行,那么echos 的值是 "[空格]1" 吧?
::然后程序再次執(zhí)行a1的值假設(shè)是數(shù)字2
::那么set "echos=%echos%%a1%"的意思就是
::定義變量echos的值為 "[空格]1" + 數(shù)字2,也就是 "[空格]12"
::.....
set /a num=%num%+1
::這句意思是變量num的值加一(也就是循環(huán)了一次)
if "%num%" == "75" echo %echos%&&goto :start
::當(dāng)循環(huán)執(zhí)行以上語(yǔ)句了75次后顯示一次疊加的變量echos
::換句話(huà)說(shuō)就是循環(huán)以上語(yǔ)句75次后顯示變量echos
goto :num
::跳轉(zhuǎn)到標(biāo)簽num
附Color命令各類(lèi)顏色代碼
主要給新手看
主要用于了解批處理的一下知識(shí)
1.隨機(jī)變量的使用
2.變量的疊加
下面是源代碼:
復(fù)制代碼 代碼如下:
@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
我來(lái)詳細(xì)解釋一下
復(fù)制代碼 代碼如下:
@echo off
::關(guān)閉回顯(不用說(shuō)了吧)
color 0a
::這句的意思是改變批處理的字體顏色,0a就是顏色代碼(具體可以看Color命令)
:start
set num=0
::定義(重新定義)num的變量,值為0(我們用這個(gè)變量來(lái)計(jì)算批處理循環(huán)的次數(shù))
set "echos= "
::定義(重新定義)echos的變量,值為一個(gè)空格
:num
set /a a1=%random%%%3
::這句就很重要了,這句可以說(shuō)是整個(gè)數(shù)碼雨代碼的核心
::這句的意思是定義一個(gè)隨機(jī)數(shù),值在"3"以下
::要限制隨機(jī)數(shù)的值,必須用set命令的/a開(kāi)關(guān)
::比如我想定義一個(gè)num的變量,這個(gè)變量是隨機(jī)數(shù),切必須小于20,那代碼就是
::set /a num=%random%%%20
::以上是完整的代碼,如果沒(méi)有使用/a開(kāi)關(guān)寫(xiě)成了set num=%random%%%20
::那么就會(huì)出現(xiàn)錯(cuò)誤
if "%a1%" == "1" set "a1= "
::這句意思是如果變量a1(也就是上一句的隨機(jī)變量)值是1的話(huà)那么a1的值就是一個(gè)空格
::Ps(這里我有必要說(shuō)一下)
::我們程序的目的是模擬數(shù)碼雨
::大家也許也看過(guò)數(shù)碼雨,數(shù)碼雨不是全是0和1,中間也是有空隙的,這句就是為了達(dá)到這個(gè)目的
::下面一句也是同樣的目的
::最后還有一點(diǎn)要提
::不知大家發(fā)現(xiàn)沒(méi)有我們之前的語(yǔ)句我沒(méi)有用雙引號(hào)如set num=0
::而這句 set "a1= " 卻用了雙引號(hào),這是為什么呢
::其實(shí),之前的語(yǔ)句set num=0,也可以改為set "num=0"
::這樣似乎顯得比較標(biāo)準(zhǔn),是不是 set "a1= " 也可以改為 set a1= 呢
::答案是"No"
::因?yàn)閟et a1=這句就算你在語(yǔ)句后面加入了空格,批處理也不會(huì)去識(shí)別
::導(dǎo)致了a1的值為空,在批處理中,變量的值是不能為空的,所以我們用空格代替
::就寫(xiě)成 set "a1= "
if "%a1%" == "2" set "a1= "
::如果a1值為2,那么a1的值就是一個(gè)空格
if "%a1%" == "0" set /a a1=%random%%%2
::這句的意思是,如果隨機(jī)變量a1的值為0,那么a1的值將隨機(jī)取一個(gè)2以下的整數(shù)
::換句話(huà)說(shuō)就是如果a1值是0,那么a1就隨機(jī)選0和1兩個(gè)數(shù)
set "echos=%echos%%a1%"
::這里就是我所說(shuō)的變量疊加
::之所以用引號(hào)是因?yàn)閍1也有可能是空格
::其次就是echos=%echos% .. 我們現(xiàn)在只看這段
::這句話(huà)的意思是定義echos變量為 變量echos和變量a1的 值
::是不是有些暈
::我們?cè)诔绦蜷_(kāi)始時(shí)就把echos變量定為一個(gè)空格了
::所以這次定義就吧echos定義為 一個(gè)空格+變量a1
::是不是清晰了點(diǎn)?
::我們用實(shí)例來(lái)吧
::變量echos現(xiàn)在是一個(gè)空格我們用[空格]代替
::我們?cè)偌僭O(shè)變量a1是數(shù)字1
::那么這次變量就是把 echos定義為 [空格]+1
::所以語(yǔ)句執(zhí)行后echos 的值就是 一個(gè)空格然后是數(shù)字1
::對(duì)吧...清晰了吧?這句其實(shí)就是變量疊加
::如果語(yǔ)句繼續(xù)執(zhí)行,那么echos 的值是 "[空格]1" 吧?
::然后程序再次執(zhí)行a1的值假設(shè)是數(shù)字2
::那么set "echos=%echos%%a1%"的意思就是
::定義變量echos的值為 "[空格]1" + 數(shù)字2,也就是 "[空格]12"
::.....
set /a num=%num%+1
::這句意思是變量num的值加一(也就是循環(huán)了一次)
if "%num%" == "75" echo %echos%&&goto :start
::當(dāng)循環(huán)執(zhí)行以上語(yǔ)句了75次后顯示一次疊加的變量echos
::換句話(huà)說(shuō)就是循環(huán)以上語(yǔ)句75次后顯示變量echos
goto :num
::跳轉(zhuǎn)到標(biāo)簽num
附Color命令各類(lèi)顏色代碼
相關(guān)文章
用BAT實(shí)時(shí)讀取某個(gè)文件目錄下文件數(shù)(包括子目錄)
實(shí)時(shí)取得某個(gè)文件目錄下文件數(shù),我嘗試了好多方法,最后發(fā)現(xiàn)其實(shí)用BAT文件還是比較方便的,比如指定幾個(gè)文件目錄,然后分別把他們的文件數(shù)目統(tǒng)計(jì)出來(lái)(包括子目錄),把值放入指定的文本文件,為了實(shí)時(shí)讀取,我做了循環(huán)2013-05-05
使用FTP下載目錄,即FTP命令批量自動(dòng)下載的bat文件
使用FTP下載目錄,即FTP命令批量自動(dòng)下載的bat文件...2007-03-03
教你編寫(xiě)bat腳本W(wǎng)indows批處理
這篇文章主要介紹了bat腳本W(wǎng)indows批處理的相關(guān)知識(shí),批處理腳本文件具有特殊的擴(kuò)展名BAT或CMD,本文介紹了常見(jiàn)用途及命令技巧,需要的朋友可以參考下2022-04-04
BAT文件語(yǔ)法和技巧(bat文件的編寫(xiě)及使用)
批處理文件是一個(gè)文本文件,這個(gè)文件的每一行都是一條DOS命令(大部分時(shí)候就好象我們?cè)贒OS提示符下執(zhí)行的命令行一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文本文件編輯工具創(chuàng)建和修改批處理文件2006-12-12

