亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

一個“靈異”批處理引發的思考加補充說明

2020-06-09 14:11:56
字體:
來源:轉載
供稿:網友
批處理的要求是:隨機顯示的數字為(6,7,8,9,10,11,12,14,15,16,17)為其中的一個

注:里面沒有13的

下面的兩個代碼,第一個出錯,第二個卻成功了,但他們的區別只是第一個(%random%)%%(%n%)+1運算后的值賦予%tn%,而第二個則將運算后的值繼續賦予%n%……
復制代碼 代碼如下:

@echo off 
set "string=6 7 8 9 10 11 12 14 15 16 17" 
for %%i in (%string%) do call set /a "n=%%n%%+1" 
set /a "tn=(%random%)%%(%n%)+1" 
for /f "usebackq tokens=%tn% delims= " %%i in ('%string%') do echo %%i 
pause 
goto :EOF 

復制代碼 代碼如下:

@echo off 
set "string=6 7 8 9 10 11 12 14 15 16 17" 
for %%i in (%string%) do call set /a "n=%%n%%+1" 
set /a "n=(%random%)%%(%n%)+1" 
for /f "usebackq tokens=%n% delims= " %%i in ('%string%') do echo %%i 
pause 
goto :EOF 

發現set /a "tn=(%random%)%%(%n%)+1"這個語句里面被賦值的變量名稱只能是一個字符的,多于一個字符也會出錯(測試過,和for無關),但如果把賦值表達式兩邊的引號也去掉,則不會出現這個錯誤!

狂倒……
for %%i in (%string%) do call set /a "n=%%n%%+1"

這個語句讓偶理解了好半天:
我們知道批處理在運行過程中,在讀取每條語句/執行每個命令都會擴充一次語句/命令里的變量。
我們來看看這個例子發生了什么事情:
在讀取for語句時,%%n%%被擴充為%n%,即do的是call set /a "n=%n%+1"。
此時我們也許會認為直接set /a "n=%n%+1"不就行了嗎,call是多此一舉。
但是,實際上在這個例子里,如果省略call,set命令會出錯,提示“找不到操作數?!?
為什么呢?因為讀取for時已經擴充過一次,所以for語句會剝奪do后第一個命令擴充變量的權力。
所以,省略call后,set不再擴充%n%,認為%n%不是數字,所以出錯了。
經過call之后,set命令再次擴充%n%,即使%n%未賦值也能被擴充為空,此時就可以進行set運算了。
即call并沒有擴充變量,只是起到了把set命令與for語句隔開的作用,讓set不被for剝奪擴充變量的權力。
當然,你認為是call擴充的也可以,效果一樣,雖然實際過程不相同。
當%%i=6時,%n%被擴充為空,set把n賦值為1
當%%i=7時,%n%被擴充為1,set把n賦值為2
當%%i=8時,%n%被擴充為2,set把n賦值為3
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合色激情五月| 久久久av亚洲男天堂| 91久久精品美女| 日韩电影免费观看在线观看| 欧美高清视频在线| 欧美久久精品午夜青青大伊人| 久久综合亚洲社区| 精品国产依人香蕉在线精品| 国产不卡av在线免费观看| 6080yy精品一区二区三区| 正在播放欧美视频| 欧美多人爱爱视频网站| 久久久久99精品久久久久| 欧美一级片久久久久久久| 亲爱的老师9免费观看全集电视剧| 在线观看不卡av| 欧美日韩一区二区在线| 国产91露脸中文字幕在线| 最近日韩中文字幕中文| 国产一区二区香蕉| 中文字幕一区二区精品| 欧美日韩国产中文精品字幕自在自线| 国产脚交av在线一区二区| 久久久久久成人精品| 伊人亚洲福利一区二区三区| 日韩精品日韩在线观看| 欧美日韩国产精品| 7777精品视频| 国产欧美精品一区二区三区介绍| 国产精品直播网红| 欧美日韩国产一区在线| 国产午夜精品全部视频播放| 久久国产精品久久久久久久久久| 国产亚洲精品久久久久久| 久久久久久一区二区三区| 亚洲欧美一区二区激情| 日韩av网址在线观看| 久久免费国产精品1| 91精品国产综合久久久久久蜜臀| 清纯唯美日韩制服另类| 国产精品福利观看| 国产精品香蕉在线观看| 亚洲精品98久久久久久中文字幕| 91禁国产网站| 日韩视频在线免费观看| 国产精品福利网站| 国产精品一区二区久久| 国产精品欧美激情在线播放| 亚洲人成电影在线播放| 在线观看视频99| 欧美最近摘花xxxx摘花| 欧美电影院免费观看| 日韩精品在线播放| 欧美性xxxx极品hd满灌| 国产亚洲日本欧美韩国| 亚洲一区二区免费| 亚洲第一国产精品| 亚洲老头同性xxxxx| 亚洲欧美综合精品久久成人| 欧美黑人xxx| 亚洲国产古装精品网站| 国产日韩欧美综合| 在线激情影院一区| 91在线精品视频| 午夜免费日韩视频| 亚洲第一国产精品| 精品久久香蕉国产线看观看gif| 久久精品视频一| 日本午夜人人精品| 国产精品亚洲аv天堂网| 91在线免费观看网站| 国产日韩在线看片| 欧美色videos| 91精品视频免费看| 亚洲精品欧美日韩| 最近的2019中文字幕免费一页| 亚洲第一精品福利| 欧美性猛交xxxx免费看漫画| 久久久精品一区二区| 中文字幕少妇一区二区三区| 操日韩av在线电影| 一夜七次郎国产精品亚洲| 欧洲一区二区视频| 欧美激情一区二区久久久| wwwwwwww亚洲| 最近2019年手机中文字幕| 欧美日韩在线视频一区二区| 国产精品www| 亚洲精品aⅴ中文字幕乱码| 国产精品久久久久国产a级| 伊人青青综合网站| 色综合久久悠悠| 国产精品久久久久久av福利软件| 69国产精品成人在线播放| 日韩精品欧美激情| 亚洲精品福利视频| 国产精品美女免费| 日韩一区在线视频| 亚洲人成电影网站色xx| 操日韩av在线电影| 国产精品亚发布| 亚洲sss综合天堂久久| 欧美xxxx综合视频| 久久黄色av网站| 日韩精品在线观看一区| 热久久这里只有| 精品呦交小u女在线| 久久久999国产精品| 欧美日韩精品在线| 国产精品亚洲片夜色在线| 日本三级久久久| 欧美日韩一二三四五区| 国产精品视频久久久| 中日韩美女免费视频网站在线观看| 色妞在线综合亚洲欧美| 日韩在线视频播放| 91精品国产精品| 日韩在线观看电影| 日韩网站免费观看| 最近2019年日本中文免费字幕| 欧美片一区二区三区| 九色精品免费永久在线| 久久九九全国免费精品观看| 国产视频精品自拍| 午夜欧美不卡精品aaaaa| 成人黄色午夜影院| 久久久久成人精品| 九九视频这里只有精品| 影音先锋欧美在线资源| 亚洲淫片在线视频| 国产亚洲a∨片在线观看| 韩曰欧美视频免费观看| 91香蕉亚洲精品| 亚洲国产精品久久| 国内精品久久久久久影视8| 精品国产欧美一区二区三区成人| 欧美日韩亚洲精品一区二区三区| 国产日韩在线看| 性欧美暴力猛交69hd| 成人激情综合网| 91成品人片a无限观看| 国产亚洲欧洲黄色| 精品动漫一区二区| 亚洲精品中文字幕有码专区| 精品久久久久久亚洲国产300| 美日韩精品视频免费看| 亚洲欧洲自拍偷拍| 欧美国产欧美亚洲国产日韩mv天天看完整| 一本色道久久88亚洲综合88| 欧美性极品xxxx娇小| 欧美在线视频导航| 国产精品综合久久久| 欧美激情在线观看视频| 国产精品视频男人的天堂| 亚洲国模精品私拍| 国产日韩欧美夫妻视频在线观看| 久久久国产精彩视频美女艺术照福利| 亚洲欧美三级伦理| 日韩成人av在线| 久久精品免费播放| 日韩成人在线免费观看| 国产综合视频在线观看| 亚洲成人久久久久| 国产在线观看91精品一区|