批處理(Batch)腳本,使用的是按行讀取的預(yù)處理方式。在for循環(huán)中,do后邊的空號(hào)中的內(nèi)容是作為一行來處理的,所以在擴(kuò)號(hào)里的賦值后輸出操作中賦值是無效的,如果需要使賦值有效,需要啟用變量延遲(全稱延遲環(huán)境變量擴(kuò)展),變量延遲中的變量不能使用%v%輸出,需要使用!v!輸出。
創(chuàng)新互聯(lián)長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白山企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),白山網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
開啟變量延遲的方式:setlocal enabledelayedexpansion
1.for循環(huán)例:
錯(cuò)誤:
@echo off
for %%i in (*.txt) do (
set v=%%i
echo %v%
)
pause
輸出:echo處于關(guān)閉狀態(tài)
正確:
@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
set v=%%i
echo !v!
)
pause
輸出:xx.txt
2.體現(xiàn)預(yù)處理輸出和期望值不符合的例子:
錯(cuò)誤:
@echo off
set v=1
set v=2&echo %v%
pause
輸出:1
正確:
@echo off
setlocal enabledelayedexpansion
set v=1
set v=2&echo !v!
pause
輸出:2