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

Если вам нужно простое объяснение того, что я хочу, вместо полного контекста, просто прочитайте, что выделено жирным шрифтом.
Я работаю над проектами, которые реплицируют старый сервер telnet, на котором выполняется пакетный код. Мне нужно создать команду who, которая будет отображать список недавних пользователей и то, как давно они дали команду. Я настроил его так, что каждый раз, когда пользователь запускает "команду", он выводит переменную в файл в папке с именем 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.

0 ответов

Другие вопросы по тегам