Этот пакетный скрипт усекает файл, если его размер превышает 10 МБ. Он запишет последние 500 строк во временный файл, а затем перезапишет исходный файл временным файлом. Вы можете настроить размер файла и количество строк, изменив соответствующие значения переменных.
Вы можете использовать этот сценарий в запланированном задании, как описано Джейсоном Эвансом. На самом деле можно запускать задачу каждую минуту. Самый простой способ добиться этого - создать задачу с любой конфигурацией расписания и затем отредактировать ее. Затем вы расширили свойства для интервалов планирования, как каждую минуту.
Вот скрипт:
@ECHO OFF
REM REMAINING_LINES holds the number of lines to keep
SET REMAINING_LINES=500
REM define file size limit to be 10 MB
SET FILE_SIZE_LIMIT=10737418240
REM check if file exists
IF NOT EXIST "%1" GOTO END
REM check file size by parsing the output of DIR command
FOR /F "tokens=3" %%A IN ('dir /-c /n "%1" ^| more +5') DO (
IF /I %%A GTR %FILE_SIZE_LIMIT% GOTO TRUNCATE
GOTO END
)
:TRUNCATE
REM COUNT holds the number of lines in the file
SET COUNT=0
REM count lines by incrementing count by 1 for each line in input file
FOR /F %%l in ('type "%1"') DO SET /A COUNT+=1
REM calculate the line offset
SET /A LINE_OFFSET=%COUNT%-%REMAINING_LINES%
REM check we have at least two lines remaining
IF /I %LINE_OFFSET% LEQ 1 GOTO END
REM write remaining lines to temp file
MORE +%LINE_OFFSET% "%1" > "%1.tmp"
REM overwrite input file with temp file
MOVE /Y "%1.tmp" "%1"
ECHO %1 truncated.
:END