Вы можете попробовать следующий код:
@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 символов.