배치: 최근 파일과 수정 날짜를 나열합니다.

배치: 최근 파일과 수정 날짜를 나열합니다.

전체 맥락 대신 내가 원하는 것에 대한 간단한 설명을 원한다면 굵은 글씨로 된 내용을 읽으십시오.
저는 배치 코드로 실행되는 오래된 텔넷 서버를 복제하는 프로젝트를 진행하고 있습니다. 나는WHO명령, 최근 사용자와 해당 사용자가 명령을 실행한 기간을 나열하는 명령입니다. 사용자가 "명령"을 실행할 때마다 online사용자 이름으로 설정된 파일 이름으로 호출되는 폴더의 파일에 변수를 에코하도록 설정했습니다 . 이제 who 명령이 작동하도록 하려면 명령이 실행된 지 얼마나 됐는지 처리할 수 있어야 합니다. 즉, 지난 5분 동안 명령을 내린 사용자만 표시하고 싶습니다.
따라서 기본적으로 내가 해야 할 일은 다음과 같습니다.

1] 디렉터리에서 5분 이상 된 파일을 삭제할 수 있어야 합니다.
2] 얼마나 오래 전에 파일을 얻을 수 있어야 합니까?(특히 나머지 파일)다음과 같은 형식으로 수정되었습니다. This file was modified 5 Minutes and 32 Seconds ago.파일이 5초 전에 수정된 경우에는 형식을 지정하는 것이 좋습니다 This file was modified 5 seconds ago.그리고 1초 전에 생성된 파일은 충돌할 수 없습니다. 나는 그것이 말하더라도 상관하지 않지만 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.

관련 정보