
[討論]批處理set/a語句報錯“此時不應有……”的原因最后由 pcl_test 于 -7-16 09:37set /a 進行數值計算是一個非常實用的指令,特別在FOR內可以不用開啟變量延時非常強大
- set a=0
- set b=0
- for /l %%1 in (1,1,5) do set /a a=((b+=a)+%%1)*5 &set /a a+=1
- echo %a% %b%
- pause>nul
nclick="copycode($('code0'));">復制代碼
從上面這幾句中就可以看出set /a的強大但是在相同效果的另一句中卻出現了異外!執行下面這段代碼!問題出現了!為什么?
- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a)+%%1)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
nclick="copycode($('code1'));">復制代碼
提示:此處不應有 +%1)*5是因為+%1的問題嗎?
- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a)+a)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
nclick="copycode($('code2'));">復制代碼
結果還是:此處不應有 +a)*5再改:
- set a=0
- set b=0
- for /l %%1 in (1,1,5) do (
- set /a a=((b+=a^)+%%1^)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
nclick="copycode($('code3'));">復制代碼
通過!原來是后)要轉義,改成set/a a=((b+=a)+%%1)*5也通過!那么是FOR闖的禍嗎?
- set a=0
- set b=0
- (
- set /a a=((b+=a)+a)*5
- set /a a+=1
- )
- echo %a% %b%
- pause>nul
nclick="copycode($('code4'));">復制代碼
結果還是一樣!那么為什么轉入字塊后 SET /A 就出錯呢?大家一起來說說!