@echo off
:: 把下一行的數(shù)字復(fù)制到前面一行的后面,并用空格分開
setlocal enabledelayedexpansion
for /f %%i in (test.txt) do (
set /a count+=1
set first=!second!
set second=%%i
if !count! gtr 1 echo !first! !second!
)
pause
確切地說,它實(shí)現(xiàn)的功能是后行到前一行的添加。這里使用到了變量延遲。因?yàn)榕幚砻钸\(yùn)行是按行讀取的,如果遇到for命運(yùn),其后用一對圓括號閉合的所有語句也當(dāng)作一行。在處理之前要完成必要的預(yù)處理工作,這就是對該命令中的變量進(jìn)行賦值。在此句之前,運(yùn)行時(shí)并不知道count、first和second變量的值,所以會出錯(cuò)。解決方法當(dāng)然就是開始變量延遲機(jī)制。以下還有幾點(diǎn)可以學(xué)習(xí):
在這里命令for在解析文件時(shí),省略了對變量的描述。默認(rèn)的是"tokens=*"。
set /a expression :/a 命令開關(guān)指定set命令計(jì)算expression表達(dá)式。
if命令里使用了比較運(yùn)算符gtr(greater than)
That's all! 舉個(gè)例子:test.txt文件中假設(shè)有
經(jīng)典批處理
分析
兩行字符串,那所得的結(jié)果是:經(jīng)典批處理 分析
cheers! that is funny.
如果我不滿意,我想想偶數(shù)行的加到奇數(shù)行上去,那
@echo off
::append even line to odd line
setlocal enabledelayedexpansion
for /f %%i in (test.txt) do (
set /a count+=1
set first=!second!
set second=%%i
set /a mod=!count!%%2
if !mod! equ 0 echo !first! !second!
)
pause
注意,模運(yùn)算在批處理文件中是需要使用兩個(gè)%%,在使命行中使用一個(gè)。
經(jīng)常進(jìn)行拓展訓(xùn)練,能讓你體會的更多,不是么?
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。