日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

批处理命令 / 延迟环境变量扩展

發(fā)布時(shí)間:2024/10/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批处理命令 / 延迟环境变量扩展 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@time 2019-07-09 @author Ruo_Xiao

1、變量擴(kuò)展

? ? ? ? 當(dāng)寫(xiě)一個(gè) bat 腳本時(shí),解釋器會(huì)讀取命令行完整指令,若解釋器發(fā)現(xiàn)指令里面有變量時(shí),需要對(duì)變量進(jìn)行替換,那么識(shí)別變量的方法就是用“%”將變量括起來(lái)。替換之后,再進(jìn)行指令的匹配操作,最后執(zhí)行命令。

? ? ? ? 整體過(guò)程為:

? ? ? ? (1)讀取完整指令。

? ? ? ? (2)對(duì)變量進(jìn)行替換。

? ? ? ? (3)匹配指令。

? ? ? ? 上述的第2步就是變量擴(kuò)展步驟,也就是解釋器識(shí)別變量的步驟。

栗子:

@echo offset var=50 echo %var%

變量擴(kuò)展完之后,實(shí)際顯示的命令為

echo 50

?

2、延遲環(huán)境變量擴(kuò)展

? ? ? ? ?上述操作對(duì)于 echo 等其他單行指令是有效的,但是對(duì)于嵌套指令來(lái)說(shuō)就有問(wèn)題,如下栗所示:

@echo offfor %%i in (1,1,3) do ( set var=%%i echo %var% )

結(jié)果如下所示:

? ? ? ?原因是 Bat 解釋器將整個(gè) for 語(yǔ)句當(dāng)做一條完整的指令,進(jìn)行變量擴(kuò)展時(shí),會(huì)將 “set var=%%i” 變?yōu)?“set var=”,因?yàn)?for 語(yǔ)句之前,i 變量并沒(méi)有賦值,所示只能給 var 賦值為空。最后的 “echo %var%” 就變?yōu)?“echo? ?”,那么只能顯示 echo 的開(kāi)關(guān)狀態(tài)了。

? ? ? ?為了解決上述問(wèn)題,Bat 增加了延時(shí)環(huán)境變量擴(kuò)展的功能,該功能的作用就是延時(shí)變量擴(kuò)展,先將 for 語(yǔ)句中各個(gè)指令執(zhí)行一遍,再進(jìn)行變量擴(kuò)展,從而實(shí)現(xiàn)了代碼結(jié)果的正常化。

? ? ? ?增加延時(shí)環(huán)境變量的指令為:

setlocal enabledelayedexpansion……endlocal

? ? ? ?兩條指令之間的命令中,變量用 “!” 包起來(lái)來(lái)表示。

?

(SAW:Game Over!)

總結(jié)

以上是生活随笔為你收集整理的批处理命令 / 延迟环境变量扩展的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。