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

首頁 > 編程 > BAT > 正文

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

2020-07-26 20:29:36
字體:
來源:轉載
供稿:網友
批處理的要求是:隨機顯示的數字為(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
国产精品网站视频| 亚洲天堂免费观看| 亚洲美女福利视频网站| 日韩二区三区在线| 国语自产偷拍精品视频偷| 欧美大片在线看免费观看| 综合久久五月天| 国产精品久久久久久久久久| 国产亚洲一区二区精品| 操人视频在线观看欧美| 亚洲国产精品成人精品| 欧美有码在线视频| 亚洲影院高清在线| 欧美激情图片区| 国模叶桐国产精品一区| 91国自产精品中文字幕亚洲| 亚洲va男人天堂| 日韩免费高清在线观看| 九九九久久国产免费| 蜜月aⅴ免费一区二区三区| 国产精品一香蕉国产线看观看| 国产精品18久久久久久首页狼| 久久久久中文字幕| 日韩欧美福利视频| 欧美人与性动交a欧美精品| 91免费版网站入口| 亚洲色图美腿丝袜| 青草青草久热精品视频在线网站| 欧美区二区三区| 国产精品日韩久久久久| 国产一区私人高清影院| 日韩最新免费不卡| www.欧美三级电影.com| 日韩欧美精品中文字幕| 亚洲精品乱码久久久久久金桔影视| 亚洲r级在线观看| 日韩精品免费视频| www.欧美视频| 亚洲一区亚洲二区亚洲三区| 日韩视频中文字幕| 日本高清不卡在线| 日韩欧美在线网址| 久久成人亚洲精品| 国产精品∨欧美精品v日韩精品| 亚洲肉体裸体xxxx137| 7m精品福利视频导航| 国产精品第8页| 久久亚洲国产精品成人av秋霞| 亚洲一区中文字幕在线观看| 亚洲精品国精品久久99热| 国产成人中文字幕| 成人性生交xxxxx网站| 欧美肥婆姓交大片| 国语自产精品视频在线看抢先版图片| 欧美视频中文字幕在线| 色777狠狠综合秋免鲁丝| 日韩电影大全免费观看2023年上| 91精品国产综合久久香蕉的用户体验| 久久久久久久久久久免费精品| 欧美成人中文字幕| 亚洲欧美日韩一区在线| 日韩av在线一区二区| 国产在线拍偷自揄拍精品| 日韩最新在线视频| 欧美日本啪啪无遮挡网站| 国产精品久久9| 亚洲国内高清视频| 国产精品白嫩美女在线观看| 国产精品久久久久久久久久久新郎| 国产精品夫妻激情| 欧美性xxxxxx| 久久人体大胆视频| 国产亚洲福利一区| 国产精品视频在线观看| 欧美日韩xxxxx| 亚洲高清久久久久久| 日本午夜在线亚洲.国产| 亚洲深夜福利在线| 中文字幕日本欧美| 亚洲第一免费网站| 91久久国产精品| 日韩欧美一区二区三区久久| 一区二区三区在线播放欧美| 国产深夜精品福利| 国产精品福利小视频| 欧美超级免费视 在线| 国产一区二区三区三区在线观看| 伊人久久五月天| 永久免费毛片在线播放不卡| 亚洲午夜女主播在线直播| 欧美精品在线播放| 久久69精品久久久久久久电影好| 国产欧美va欧美va香蕉在线| 亚洲成人中文字幕| 成人国产在线激情| 亚洲高清一二三区| 国产精品视频白浆免费视频| 亚洲免费福利视频| 亚洲成av人片在线观看香蕉| 操日韩av在线电影| 亚洲最新视频在线| 欧美激情精品久久久久久| 日韩美女中文字幕| 国产精品免费久久久久久| 日本久久久a级免费| 91精品视频观看| 亚洲天堂成人在线| 精品亚洲一区二区三区在线观看| 亚洲国产精品嫩草影院久久| 2019中文字幕免费视频| 成人激情电影一区二区| 黄网站色欧美视频| 国产欧美婷婷中文| 欧美激情亚洲视频| 欧美性一区二区三区| 美女视频黄免费的亚洲男人天堂| 日韩精品免费在线视频观看| 97在线免费观看| 亚洲免费视频观看| 亚洲女人天堂成人av在线| 亚洲精品欧美日韩| 精品国产福利视频| 欧美激情成人在线视频| 情事1991在线| 亚洲第一福利在线观看| 欧美大片欧美激情性色a∨久久| 69av在线播放| 欧美精品激情视频| 欧美成人一区在线| 亚洲国产一区二区三区四区| 久久影院在线观看| 日韩中文字幕在线视频| 中文字幕亚洲色图| 韩国日本不卡在线| 国产ts一区二区| 亚洲自拍欧美色图| 成人国内精品久久久久一区| xxxx性欧美| 久久久综合av| 成人黄色在线免费| 自拍偷拍亚洲欧美| 日韩av色在线| 九九热这里只有精品免费看| 国模gogo一区二区大胆私拍| 亚洲人成网站色ww在线| 亚洲欧洲在线视频| 久久久久一本一区二区青青蜜月| 中文国产成人精品| 久久人91精品久久久久久不卡| 欧美激情亚洲一区| 欧美极品欧美精品欧美视频| 久久的精品视频| 欧美性受xxx| 69久久夜色精品国产69乱青草| 国产欧美最新羞羞视频在线观看| 国产日韩换脸av一区在线观看| 久久久在线观看| 亚洲奶大毛多的老太婆| 亚洲在线免费视频| 亚洲美女动态图120秒| 日韩中文字幕第一页| 亚洲自拍偷拍视频| 国产精品扒开腿做| 在线播放日韩精品|