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

首頁 > 編程 > BAT > 正文

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

2020-03-29 20:17:37
字體:
來源:轉載
供稿:網友
批處理的要求是:隨機顯示的數字為(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
for %%i in (1) do echo %%n%%
pause

在運行這個批處理的時候,我們看到的是for %i in (1) do echo %n%
即是說,讀取for語句的時候,%%n%%已經被擴充為%n%
如果echo還具有擴充變量的權力,echo %n%應該顯示%n%的真實值123
實際上,echo原原本本的顯示“%n%”
說明,for把echo擴充變量的權力剝奪了。

當然,您平時一定是直接for %%i in (1) do echo %n%
但是,這個“靈異”批處理是想引用一個不被for擴充的變量,而又想在do里能夠得到擴充,也就是說想達到延遲環境變量的效果。目的就是使用一個遞增變量統計%string%包含了多少個字符。

偶對六翼刺猬的無限崇敬,有如滔滔長江,連綿不絕,又如黃河泛濫,一發而不可收拾!
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品嫩草影院一区二区| 亚洲最大福利视频网| 久久久999精品| 性欧美激情精品| 国产啪精品视频| 69影院欧美专区视频| 亚洲国产婷婷香蕉久久久久久| 欧美精品情趣视频| 国产精品一区二区三区毛片淫片| 国a精品视频大全| 亚洲国产一区二区三区在线观看| 91在线免费观看网站| 日韩亚洲精品视频| 国产噜噜噜噜久久久久久久久| 亚洲美女www午夜| 亚洲视频电影图片偷拍一区| 精品亚洲国产成av人片传媒| 2019中文字幕全在线观看| 亚洲а∨天堂久久精品9966| 久久久久久噜噜噜久久久精品| 青青草成人在线| 亚洲欧美制服中文字幕| 国产精品美女www| 亚洲高清av在线| 成人黄色午夜影院| 欧美在线观看日本一区| 97免费中文视频在线观看| 久久伊人精品天天| 精品久久在线播放| 国产精品福利无圣光在线一区| 国产精品老女人视频| 亚洲成人动漫在线播放| 91亚洲国产成人精品性色| 国产精品永久免费视频| 91精品久久久久久久久久另类| 久久国产精品久久国产精品| 人人爽久久涩噜噜噜网站| 7777精品久久久久久| 91av在线播放视频| 久久精品一偷一偷国产| 色樱桃影院亚洲精品影院| 精品国产福利在线| 欧洲成人午夜免费大片| 成人欧美一区二区三区黑人| 亚洲人成人99网站| 亚洲视频在线观看网站| 成人免费视频网| 日韩中文字幕在线免费观看| 中文字幕精品一区二区精品| 国产精品揄拍500视频| 浅井舞香一区二区| 国产精品观看在线亚洲人成网| 日韩精品免费在线| 亚洲国产精品电影| 亚洲欧美日韩一区在线| 一区二区三区 在线观看视| 中文字幕在线看视频国产欧美在线看完整| 国产精品视频yy9099| 欧美日韩一区二区在线| 亚洲视频在线观看视频| 怡红院精品视频| 久久久久国产精品免费| 欧美在线国产精品| 日韩美女在线观看一区| 日韩av免费在线播放| 欧美激情免费在线| 国产在线观看精品一区二区三区| 国产v综合v亚洲欧美久久| 久久精品2019中文字幕| 91精品在线看| 91精品国产综合久久香蕉| 欧美亚洲成人网| 亚洲无线码在线一区观看| 国模视频一区二区| 久久久女人电视剧免费播放下载| 国产va免费精品高清在线观看| 热久久美女精品天天吊色| 一区二区三区亚洲| 91超碰caoporn97人人| 久久精品青青大伊人av| 91精品久久久久久久久青青| 欧美色欧美亚洲高清在线视频| 日韩精品在线观| 亚洲亚裔videos黑人hd| 精品香蕉在线观看视频一| 日韩av中文字幕在线| 欧美成年人视频| 2021久久精品国产99国产精品| 91牛牛免费视频| 性欧美xxxx视频在线观看| 性欧美办公室18xxxxhd| 青青草成人在线| 欧美大秀在线观看| 国产欧美一区二区三区久久| 欧美裸体xxxx极品少妇软件| 色综合五月天导航| 欧美在线视频网| 亚洲成色777777在线观看影院| 一本色道久久88综合日韩精品| 久久亚洲一区二区三区四区五区高| 91国产精品91| 成人久久18免费网站图片| 91久久久久久久久久| 尤物tv国产一区| 欧美黄色免费网站| 成人精品视频久久久久| 欧美最猛性xxxxx免费| 亚洲精品成人久久| 欧美丰满少妇xxxxx做受| 日韩中文在线中文网三级| 青草青草久热精品视频在线观看| 国产三级精品网站| 日韩免费在线视频| 亚洲人成电影网站色xx| 国产精品9999| 亚洲影视九九影院在线观看| 精品国产1区2区| 奇米影视亚洲狠狠色| 亚洲视频欧洲视频| 成人伊人精品色xxxx视频| 日本精品一区二区三区在线| 亚洲一区二区黄| 日韩av毛片网| 国产精品视频网| 国产欧美最新羞羞视频在线观看| 久久久久五月天| 77777少妇光屁股久久一区| 久久在线免费视频| 亚洲天堂av网| 国产精品男女猛烈高潮激情| 日韩风俗一区 二区| 成人中文字幕在线观看| 日韩免费中文字幕| 国产精品视频永久免费播放| 久久人人爽人人爽人人片av高清| 日韩精品极品视频免费观看| 国产亚洲欧洲在线| 亚洲国产91精品在线观看| 国内精久久久久久久久久人| 2019国产精品自在线拍国产不卡| 伊人男人综合视频网| 亚州国产精品久久久| 欧美成在线视频| 亚洲精选一区二区| 久久人人爽国产| 亚洲一区美女视频在线观看免费| 91久久精品视频| 精品国偷自产在线视频99| 亚洲福利在线看| 亚洲日本欧美日韩高观看| 日韩在线观看免费全| 欧美大片在线看免费观看| 亚洲bt欧美bt日本bt| 久久久久久一区二区三区| 久久国产精品久久久久久| 91在线网站视频| 国产一区二区三区在线观看视频| 欧美激情精品久久久| 日韩欧美国产高清91| 亚洲综合在线小说| 一区二区欧美激情| 深夜福利亚洲导航| 欧美黑人xxxx| 欧美性xxxx18|