Пакет: список последних файлов и даты их изменения

Пакет: список последних файлов и даты их изменения

Если вам нужно простое объяснение того, что я хочу сказать, а не полный контекст, просто прочтите то, что выделено жирным шрифтом.
Я работаю над проектом, который копирует старый сервер telnet, работающий на пакетном коде. Мне нужно создатьВОЗcommand, команда, которая выводит список недавних пользователей и как давно они ввели команду. Я настроил ее так, что каждый раз, когда пользователь запускает «команду», она выводит переменную в файл в папке, onlineимя которой соответствует имени пользователя. Теперь, чтобы команда who работала, мне нужно иметь возможность обрабатывать, как давно была введена команда. При этом я действительно хочу, чтобы она показывала только пользователей, которые ввели команду за последние пять минут.
Так что, по сути, мне нужно сделать следующее:

1] Мне нужно иметь возможность удалять файлы из каталога, которые старше пяти минут.
2] Мне нужно узнать, как давно был создан файл.(особенно оставшиеся файлы)был изменен в следующем формате: This file was modified 5 Minutes and 32 Seconds ago.если файл был изменен всего 5 секунд назад, то предпочтительнее было бы отформатировать его в This file was modified 5 seconds ago.И файл, созданный менее секунды назад, не может его сломать. Мне все равно, что он говорит, created 0 seconds agoно он не может сказать created (blank) seconds ago.

Из-за того, как он устроен, он делает этонетдолжны зависеть от локали. Вот пример того, что %time%и %date%установлено на моей машине:Sat 03/23/2019, 17:49:47.98

Первоначально я настроил его так, чтобы он выводил в эти файлы дату и время без двоеточий и косых черт, но для математических вычислений он оказался ненадёжным.

как бы я это сделал?

Вот что у меня пока есть:

(отрывок из всего сценария)

@echo off
setlocal EnableDelayedExpansion
set TME=%time::=%
set TME=%TME: =%
Set Compare=%date:~7,2%%TME:.=%
echo.
echo Recent Users:
for /f "tokens=*" %%A in ('dir /b ..\Online') do (
    for /f "usebackq" %%i in ("..\Online\%%A") do (
        set /a Value=%Compare% - %%i
        if !Value! LSS 90000 (
            if !value! LEQ 99 (
                echo %%A   !Value! ms ago
            ) ELSE (
                if !value! GTR 9999 (
                    echo %%A   !Value:~0,-4! minutes !Value:~1,-2! seconds ago.
                ) ELSE (
                    echo %%A   !Value:~0,-2! seconds ago.
                )
            )
        )
    )
)
endlocal
echo.

Связанный контент