批处理文件以将文本文件的最后n行复制到新的文本文件中

时间:2018-10-05 10:53:42

标签: batch-file text-files

是否可以使用批处理文件将日志文件的最后n行复制到新的文本文件中。

日志文件:

line 1
line 2
line 3
line 4
line 5

n = 2

新文件:

line 4
line 5

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码:

@echo off
set /A "_LAST=2" & rem // (define the number of last lines to keep)
for /F %%C in ('^< "test.log" find /C /V ""') do set "COUNT=%%C"
set /A "LINES=COUNT-_LAST"
if %LINES% gtr 0 (set "SKIP=+%LINES%") else (set "SKIP=")
> "test.log.new" more %SKIP% "test.log"

此脚本可以处理包含空行的日志文件,此类文件的长度最多为65534个字符。但是,输出文件中最多不能包含65535行。


或尝试以下操作:

@echo off
set /A "_LAST=2" & rem // (define the number of last lines to keep)
for /F %%C in ('^< "test.log" find /C /V ""') do set "COUNT=%%C"
set /A "LINES=COUNT-_LAST"
if %LINES% gtr 0 (set "SKIP=skip^=%LINES%") else (set "SKIP=")
> "test.log.new" (
    for /F usebackq^ %SKIP%^ delims^=^ eol^= %%L in ("test.log") do (
        echo(%%L
    )
)

这一行没有行数限制。但是,它不能处理包含空行等长度超过8190个字符的文件。