
[已解決]批處理函數(shù)變量兩次擴展最后由 秋風(fēng)·飛揚 于 -6-26 11:51
- @echo off & setlocal ENABLEEXTENSIONS
- set a=one
- set b=two
- echo/Before call:swap a b [%a% %b%]
- call :Swap a b
- echo/After call 1 :swap a b [%a% %b%]
- call :Swap b a
- echo/After call 2 :swap b a [%a% %b%]
- goto :EOF
- :Swap
- setlocal
- ::================第14行=============
- call set a=%%%1%%
- ::================第15行=============
- call set b=%%%2%%
- endlocal & set %1=%b% & set %2=%a% & goto :EOF
nclick="copycode($('code0'));">復(fù)制代碼
由于 call 命令的存在,第十四行被擴展兩次,第二次擴展之后,該行相當(dāng)于 set a=one,一旦這個命令被執(zhí)行,變量 a 就會被覆蓋掉。 第十五行同樣被擴展兩次,相當(dāng)于 set b=one,換句話說,變量 a 和變量 b 現(xiàn)在都變成 one 了。 ①問:為什么兩次擴展之后,相當(dāng)于set a=one變量a被覆蓋?倘若我再加一對%% 是不是又變回來了? 這其中發(fā)生了哪些變化。14行改成這個call set Swap.a=%%%1%%就行了幫忙解釋一下吧