Если вы не хотите использовать сторонние опции и хотите сохранить чистую партию, это очень возможно.На ваш вопрос звучит так, будто вы хотите прочитать последнюю строку текстового файла и обновлять этот текст каждый раз, когда текстовый файл редактируется.Более того, этот пакетный файл должен быть call
', к которому его нужно использовать.
Чтобы сделать это, мы можем сравнить дату его последнего изменения, используя forfiles
в for loop
.Причина этого заключается в том, что если мы используем свойства файла EX: ECHO Last-Modified Date : %%~ta
, мы не получим свойства до секунд.Таким образом, файл будет сравниваться только до минут.
Теперь, когда мы можем получить последние измененные свойства, мы можем использовать оператор IF
для поиска, когда файл получит новую метку времени.Оттуда мы можем использовать модифицированный скрипт, который читает только последнюю строку текстового файла (настраивается с помощью set /a LINES=LINES+1
LINES + 1 - Infin), созданного @ Patrick Cuff
.пакетный файл, который вы хотите использовать call ReadFile.bat txtname.txt
- Вызов - Команда
- ReadFile.bat - Имя сценария пакетной обработки
- txtname.txt - Имя текстового файла для чтения
Ниже представлен полный текст скрипта.
ReadFile.bat
@ECHO OFF
@GOTO READ
:LOOP
Rem | Look for changes
FOR /f %%a in ('forfiles /M %1 /C "cmd /c echo @fdate-@ftime"') DO (set FileTimeCurrent=%%a)
IF "%FileTimeLoad%"=="%FileTimeCurrent%" (goto LOOP) else (goto READ)
:READ
cls
Rem | Get current date
FOR /f %%a in ('forfiles /M %1 /C "cmd /c echo @fdate-@ftime"') DO (set FileTimeLoad=%%a)
Rem | Get the number of lines in the file
set LINES=0
for /f "delims==" %%I in (%1) do (
set /a LINES=LINES+1
)
Rem | Print the last line
set /a LINES=LINES-1
more +%LINES% < %1
goto LOOP
Для получения справки по любой из команд выполните следующие действия:
- вызов /?
- set /?
- for /?
- if /?
- И так далее.