
對批處理變量延遲和變量嵌套的總結(jié)先看看下面兩對代碼:1:
2:nclick="copycode($('code0'));">復(fù)制代碼
- @echo off & setlocal enabledelayedexpansion
- for /l %%a in (1 1 1) do (
- set str%%a=%%a
- set s=^!str%%a^!
- )
- echo %s%
- echo !s!
- pause
自己運(yùn)行一下吧!你會發(fā)現(xiàn)結(jié)果不同,這是為什么呢?原來 問題出在第四句( set s=^!str%%a^!) 一個是有引號的,一個是沒有的,那有什么區(qū)別呢?解釋是:當(dāng)有引號時,第一次預(yù)處理將只替換變量而不處理特殊符號,也就是把所有的符號都作為普通符號,第二次預(yù)處理則和原來一樣。不信你可以運(yùn)行下面的代碼:1:nclick="copycode($('code1'));">復(fù)制代碼
- @echo off & setlocal enabledelayedexpansion
- for /l %%a in (1 1 1) do (
- set str%%a=%%a
- set s=^!str%%a^!
- )
- echo %s%
- echo !s!
- pause
2:nclick="copycode($('code2'));">復(fù)制代碼
- @echo off & setlocal enabledelayedexpansion
- for /l %%a in (1 1 1) do (
- set str%%a=%%a
- set s=^!str%%a^!^^^^
- )
- echo !s!
- pause
是不是多了個^ 這就說明問題了。nclick="copycode($('code3'));">復(fù)制代碼
- @echo off & setlocal enabledelayedexpansion
- for /l %%a in (1 1 1) do (
- set str%%a=%%a
- set s=^!str%%a^!^^^^
- )
- echo !s!
- pause

