批處理-FOR /F 參數詳解


for /f 參數詳解

例一:

for /f "skip=1 tokens=1,2* delims= " %%a in (a.txt) do echo %%a %%b %%c
pause

先從引號內的參數講起.

skip=
tokens=
delims=

這三項是用的最多的,根據需要.可以不用,可以一起使用,也可以只使用一個或兩個.
但是不管使用幾個都要用引號將它們擴起來.當然不使用時,自然就不需要引號了.
skip=
for循環文本內容是以行為單位,從上至下進行的,skip=1意識就是跳過文本的第一行,即不循環第一行
那么skip=2 自然就是跳過前兩行了,依次類推.........
delims=
先講這句
delims=后面的字符的意識是,將文本每一行的內容以delims=后面的字符分割成若干列.
假設a.txt某一行的內容是 111,222.333 444/555
我們用下面的語句
例二:

for /f "tokens=1-5 delims=,./ " %%a in (a.txt) do echo %%a %%b %%c %%d %%e
pause

顯示結果是 111 222 333 444 555
解釋:
意識就是把111,222.333 444/555,./和空格(不分先后)分成了5列.注意代碼中/和"后面有個空格,
使用中要注意空格要放到最后,如"delims=,. /" 這樣就不行了.
那如果我們不使用逗號來分割會如何呢?如: "delims=./ "那么就會分割成111,222 333 444 555
看出區別了嗎?delims=后面可以是多個字符,可以是空格,也可以什么都沒有.
什么都沒有代表什么呢?就是不以任何東西為分割符,也是整行的內容了.
因為for默認是以,;和空格作分割符的,
所以一般要取得整行內容通常會用"delims="這樣的形式來取消for的默認分割符.
tokens=``tokens=1-5
1-5很好理解就1至5,前面我們用delims=后面的字符為分割符,將文本內容分成了多列,那么你需要的是哪些列呢?
用tokens=可以很好幫你提取到.
還是以例二為例:
通過dilims=,./ 將文本分成了111 222 333 444 555 五列.
注意代碼中前面有個%%a 這里的%%a就是代表第一列,第二列就是%%b,第三列就是%%c 依此類推.....
那么我們如果把echo %%a %%b %%c %%d %%e 改為 echo %%e %%d %%c %%b %%a 會如何呢?
當然.會顯示 555 444 333 222 111
如果是:echo %%b %%d 又會顯示什么呢? 不用我說了吧!
若是第一個%%a把它改為%%i也是一樣,那么第二列就是%%j...%%k...依此類推....
明白了?就是按英文字母的順序依此類推的.
這里我們用的是tokens=1-5但是在例一中,我們用的是tokens=1,2* 有什么區別呢?
其實差不多-號代表從幾至幾而逗號代表單一的,如 tokens=1,5就是代表第一列和第五列,而不是1至5列.
*號代表剩下的所有的列.如:tokens=1,2*代表%%a為第一列,%%b為第二列,%%c代表后面所有的列.
for /f 不但可以循環文本內容還可以循環字符竄,如:
例三:

for /f "tokens=1-3 delims=,./ " %%a in ("111,222.333 444/555") do echo %%a %%b %%c
pause

只要將()里的字符串用引號擴起來,for就會把它當字符串來循環,而不是文本.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM