Пакетный файл для копирования последних n строк текстового файла в новый текстовый файл - PullRequest
0 голосов
/ 05 октября 2018

есть ли способ с помощью командного файла скопировать последние n строк файла журнала в новый текстовый файл.

Файл журнала:

line 1
line 2
line 3
line 4
line 5

n = 2

Newfile:

line 4
line 5

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете попробовать следующий код:

@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 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...