2014-12-11 109 views
4

我有一個Java程序可以在文件的最後兩行附加新的構建信息。 如何在批處理文件中讀取它們?如何在批處理腳本中讀取文件的最後兩行

+0

什麼碼你到目前爲止? – Lizz 2014-12-11 06:00:44

+0

我什麼都沒有.. – Joshi 2014-12-11 06:01:05

+0

如果你有權訪問Windows資源工具包,我一定會用['tail'](http://www.windows-commandline.com/tail-command-for-windows/)來做這個。 – 2014-12-11 06:50:28

回答

2

這將解決這個問題,其中someFile.txt是要讀取行的文件:

for /f %%i in ('find /v /c "" ^< someFile.txt') do set /a lines=%%i 
echo %lines% 
set /a startLine=%lines% - 2 
more /e +%startLine% someFile.txt > temp.txt 
set vidx=0 
for /F "tokens=*" %%A in (temp.txt) do (
    SET /A vidx=!vidx! + 1 
    set localVar!vidx!=%%A 
) 
echo %localVar1% 
echo %localVar2% 
del temp.txt 
3

該代碼段這樣的伎倆......

for /F "delims=" %%a in (someFile.txt) do (
    set "lastButOne=!lastLine!" 
    set "lastLine=%%a" 
) 
echo %lastButOne% 
echo %lastLine% 

編輯完整TAIL.BAT添加

此方法可能會被修改爲了ge t可以由參數指定的更多行數。下面的文件tail.bat

@echo off 
setlocal EnableDelayedExpansion 

rem Tail command in pure Batch: Tail.bat filename numOfLines 
rem Antonio Perez Ayala 

for /F "delims=" %%a in (%1) do (
    set /A i=%2, j=%2-1 
    for /L %%j in (!j!,-1,1) do (
     set "lastLine[!i!]=!lastLine[%%j]! 
     set /A i-=1 
    ) 
    set "lastLine[1]=%%a" 
) 
for /L %%i in (%2,-1,1) do if defined lastLine[%%i] echo !lastLine[%%i]! 

2ND編輯TAIL.BAT的新版本中添加

下面的版本更高效:

@echo off 
setlocal EnableDelayedExpansion 

rem Tail command in pure Batch, version 2: Tail.bat filename numOfLines 
rem Antonio Perez Ayala 

set /A firstTail=1, lastTail=0 
for /F "delims=" %%a in (%1) do (
    set /A lastTail+=1, lines=lastTail-firstTail+1 
    set "lastLine[!lastTail!]=%%a" 
    if !lines! gtr %2 (
     set "lastLine[!firstTail!]=" 
     set /A firstTail+=1 
    ) 
) 
for /L %%i in (%firstTail%,1,%lastTail%) do echo !lastLine[%%i]! 
+0

沒有併發症或臨時文件的好方法。雖然有更多的線要回顯,但會更棘手。 – 2014-12-11 19:10:20

+0

@Kayasax:不是。看到編輯... – Aacini 2014-12-11 21:35:37

+0

我覺得很頭疼......; – 2014-12-12 12:05:46

相關問題