Lote: lista os arquivos recentes e sua data de modificação

Lote: lista os arquivos recentes e sua data de modificação

Se você quiser uma explicação simples do que desejo, em vez do contexto completo, basta ler o que está em negrito.
Estou trabalhando em projetos que replicam um servidor telnet antigo, executando código em lote. Eu preciso criar oQuemcomando, um comando que listaria usuários recentes e há quanto tempo eles emitiram um comando. Eu o configurei para que toda vez que um usuário executar um "comando", ele ecoe uma variável em um arquivo em uma pasta chamada onlinecom o nome do arquivo definido como seu nome de usuário. Agora, para que o comando who funcione, preciso ser capaz de processar há quanto tempo o comando foi emitido. Dito isto, eu realmente só quero mostrar aos usuários que emitiram um comando nos últimos cinco minutos.
Então basicamente o que preciso fazer é o seguinte:

1] Preciso poder excluir arquivos de um diretório com mais de cinco minutos.
2] Preciso saber há quanto tempo um arquivo(especificamente os arquivos restantes)foi modificado em um formato como: This file was modified 5 Minutes and 32 Seconds ago.se o arquivo foi modificado apenas 5 segundos atrás, ele seria preferencialmente formatado This file was modified 5 seconds ago.E o arquivo criado há um segundo não pode travá-lo. Eu não me importo se diz created 0 seconds ago, mas não pode dizer created (blank) seconds ago.

Devido à forma como está configurado, isso acontecenãotem que ser dependente da localidade. Aqui está um exemplo do que %time%e %date%está configurado em minha máquina:Sat 03/23/2019, 17:49:47.98

Originalmente, eu o configurei para que ecoasse a data e a hora sem dois pontos ou barras nesses arquivos, mas não era confiável para cálculos matemáticos.

como eu faria isso?

aqui está o que eu tinha até agora:

(trecho de todo o roteiro)

@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.

informação relacionada