
[討論]批處理for命令的參數和擴展特性最后由 plp626 于 -6-14 19:25引號也可作為for /f delims的分割符,只是由于大家思維定勢忽略了:http://bathome.net/thread-12395-1-2.html 6樓
我對for的一些理解:http://bathome.net/viewthread.ph ... romuid=353#pid80129 26樓nclick="copycode($('code0'));">復制代碼
- @echo off
- for /f tokens^=1*^ delims^=^ %%a in (sdzvc) do echo %%b
- pause
可以這樣理解for的二次擴展特性:for ~ cmd內部的一個類似call的子過程。。。:FOR [/F | /R | /D |/L][option] %variable IN (<parameters>) DO ...這個內部子過程有/l /r /d /f 四個開關,有共同的do in 關鍵字,一對括號;有最多31個連續(以unicode編碼存儲)單字符名的內置變量,內置變量以%作為前綴標識;(相對call,若不shift則為11個,分別為%0 %1 %2 。。。。 %9還有特別參數%*);由于腳本中第一個%會被cmd預處理解析作為變量值開始擴展所以要再用一個%對“%”轉義(這點很像反斜杠對自身的轉義)/f 開關有eol,skip,usebackq,delims,tokens,5個關鍵字,他們作為/f開關的 “第一個參數傳遞”調用這個子過程的時候,參數分割符同call的參數分隔符(空格,制表符,逗號,分號,等號);比如
我們把參數分割符空格改為;,=也可以正常解析:nclick="copycode($('code1'));">復制代碼
- for /f tokens=1-2 delims=: %%a in (abc:123) do echo %%a %%b
更新[-6-14]內置變量名(統一以unicode編碼存儲)以%作為前綴標識,最多支持連續31個單字符;nclick="copycode($('code2'));">復制代碼
- for=;/f=;;tokens=1-2 delims=:;;%%a==in,,(abc:xy),,=;do,=echo %%a %%b
nclick="copycode($('code3'));">復制代碼
- :: cmd命令行下粘貼如下代碼
- :: 老 到 耣 的unicode編碼(連續地)為 8001 到 8023
- set ss=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
- for /f tokens=1-31 %老 in (%ss%)do @echo %老 %耂 %考 %耄 %者 %耆 %耇 %耈 %耉 %耊 %耋 %而 %耍 %耎 %耏 %耐 %耑 %耒 %耓 %耔 %耕 %耖 %耗 %耘 %耙 %耚 %耛 %耜 %耝 %耞 %耟 %耠 %耡 %耢 %耣

