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

首頁 > 編程 > BAT > 正文

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

2020-06-09 13:41:28
字體:
來源:轉載
供稿:網友
批處理的要求是:隨機顯示的數字為(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
以此類推。

舉例理解:
set n=123
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费91麻豆精品国产自产在线观看| 久久精品国产成人精品| 欧美性视频网站| 98视频在线噜噜噜国产| 少妇高潮 亚洲精品| 亚洲www永久成人夜色| 久久亚洲欧美日韩精品专区| 亚洲精品有码在线| 欧美大片免费观看| 国产精品xxx视频| 欧美激情久久久| 久久久亚洲影院| 中文字幕日韩在线观看| 亚洲精品色婷婷福利天堂| 中文字幕日韩av| 最近2019年中文视频免费在线观看| 精品视频在线播放免| 国产精品福利无圣光在线一区| 一区二区三区国产在线观看| xxxxxxxxx欧美| 91精品一区二区| 青青青国产精品一区二区| 中文字幕一区二区三区电影| 久久免费精品视频| 亚洲xxxxx电影| 国产成人综合久久| 成人激情视频网| 久久久欧美一区二区| 亚洲一级黄色av| 欧美视频一区二区三区…| 国产精品精品视频| 一区二区三区在线播放欧美| 性亚洲最疯狂xxxx高清| 97国产精品久久| 久久久久久久久久亚洲| 夜夜嗨av一区二区三区四区| 91精品国产高清久久久久久| 国产日产欧美精品| 欧美日韩中文字幕| 成人黄色在线免费| 欧美成年人视频| 91精品视频在线免费观看| 国产香蕉一区二区三区在线视频| 91中文精品字幕在线视频| 欧美大片大片在线播放| 久久人人爽人人| 欧美老女人www| 91精品国产综合久久香蕉最新版| 中文字幕九色91在线| 色悠悠久久88| 亚洲欧美精品中文字幕在线| 26uuu亚洲伊人春色| 国产精品爽爽爽| 国产日韩精品在线观看| 欧美精品在线免费播放| 欧美日韩国产中文字幕| 欧美韩国理论所午夜片917电影| 国产精品视频一区国模私拍| 亚洲美女精品久久| 欧美另类暴力丝袜| 亚洲伊人久久大香线蕉av| 日本精品在线视频| 亚洲男人天堂手机在线| 亚洲欧洲视频在线| 亚洲国产精品va在线看黑人动漫| 国产精品久久久久久影视| 国产精品久久久久影院日本| 色综合天天综合网国产成人网| 国产精品久久久久7777婷婷| 岛国精品视频在线播放| 欧美精品在线极品| 午夜精品免费视频| 5566日本婷婷色中文字幕97| 国产精品美女午夜av| 91久久精品国产91久久性色| 亚洲深夜福利网站| 久久69精品久久久久久国产越南| 国产裸体写真av一区二区| 久久久久免费视频| 成人性生交大片免费看小说| 亚洲精品乱码久久久久久金桔影视| 亚洲大胆人体视频| 久久久精品免费视频| 欧美日韩加勒比精品一区| 亚洲午夜激情免费视频| 国产欧美精品日韩精品| 欧美丰满少妇xxxxx做受| 1769国内精品视频在线播放| 亚洲аv电影天堂网| 亚洲欧美国产制服动漫| 日韩精品免费综合视频在线播放| 亚洲色无码播放| 97成人精品区在线播放| 欧美一级黑人aaaaaaa做受| 欧美性高潮在线| 亚洲欧美国产视频| 日韩视频永久免费观看| 永久免费看mv网站入口亚洲| 亚洲欧美精品suv| 亚洲香蕉av在线一区二区三区| 亚洲最大的免费| 精品久久中文字幕久久av| 韩剧1988在线观看免费完整版| 亚洲午夜精品久久久久久性色| 久久精品视频在线| 国产视频精品va久久久久久| 亚洲精品国精品久久99热一| 日韩视频免费大全中文字幕| 精品福利樱桃av导航| 在线视频一区二区| 一本色道久久88综合亚洲精品ⅰ| 98视频在线噜噜噜国产| 中文字幕亚洲综合久久筱田步美| 亚洲一品av免费观看| 国产精品偷伦免费视频观看的| 欧美日韩亚洲激情| 亚洲欧美在线一区二区| 操日韩av在线电影| 国产精品观看在线亚洲人成网| 九九热r在线视频精品| 久久亚洲精品一区二区| 国产成人鲁鲁免费视频a| 久久视频中文字幕| 中文字幕久久精品| 在线国产精品播放| 国产乱人伦真实精品视频| 68精品国产免费久久久久久婷婷| 国产午夜精品全部视频在线播放| 国产精品久久久久久久久久久久久久| 久久久久国色av免费观看性色| 国产美女精品视频免费观看| 成人激情视频在线| 国产精品久久二区| 国产一区二区日韩精品欧美精品| 国产精品久久久久久超碰| 69国产精品成人在线播放| 精品久久久久久久中文字幕| 久久色精品视频| 国产日韩欧美91| 超碰精品一区二区三区乱码| 国产日韩在线看片| 国产视频精品免费播放| 久久影院在线观看| 午夜精品一区二区三区视频免费看| 日韩中文在线中文网在线观看| 日韩成人久久久| 午夜精品福利在线观看| 精品久久在线播放| 成人欧美一区二区三区在线湿哒哒| 日韩中文综合网| 精品国产乱码久久久久久天美| 欧美精品18videosex性欧美| 久久久视频免费观看| 日日摸夜夜添一区| 国语自产偷拍精品视频偷| 性亚洲最疯狂xxxx高清| 26uuu另类亚洲欧美日本一| 26uuu国产精品视频| 国内久久久精品| 欧美日韩一区二区在线播放| 欧美成人免费va影院高清| 国产精品免费视频久久久| 日韩国产精品视频| 日韩成人中文字幕|