批处理:列出最近的文件及其修改日期

批处理:列出最近的文件及其修改日期

如果您想要简单的解释而不是完整的上下文,只需阅读粗体内容。
我正在做一个复制旧 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.

相关内容