如何批量比较两个日期?

时间:2018-12-11 21:56:27

标签: date batch-file command-line cmd

我有一个批处理脚本来获取两个日期;文件夹之一,以及当前系统日期。

我想通过查看文件夹的日期是否比当前日期早10分钟或更短时间来比较两者。本质上,这检查用户是否在最多10分钟之前修改了此文件夹。

这是我当前的代码(不完整,但基本):

@echo off
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%a/%%b/%%c)
for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a:%%b)

setlocal enabledelayedexpansion
if exist "C:\$Recycle.Bin" (
    pushd "C:\$Recycle.Bin"
    for /F "delims=" %%a in ('dir /S /b S-1-*-1001 /AD') do (set "{recycle-bin-date}=%%a")
    for %%a in ("!{recycle-bin-date}!") do (
        Set "data=%%~ta"
    )
    popd
)

set date1=%mydate% %mytime%
set date2=!data!

echo Date 1 (Current): %date1%
echo Date 2 (Recycle): %date2%
pause

::We have the dates above, how do I achieve what I'm trying to do?

如果有人可以在这里帮助我,我将非常感谢。

1 个答案:

答案 0 :(得分:1)

可以进行纯时间日期数学运算,但是非常麻烦。
(请参见Ritchie Lawrence batch function library

我建议使用PowerShell作为此工具

PowerShell一线:

[int]([datetime]::Now - (gci 'c:\$Recycle.BIN\S-1-*1001' -Force).LastWriteTime).TotalMinutes

分批包装

@Echo off
For /f "usebackq" %%A in (`
  Powershell -NoP -C "[int]([datetime]::Now - (gci 'c:\$Recycle.BIN\S-1-*1001' -Force).LastWriteTime).TotalMinutes"
`) Do Set "AgeMinutes=%%A"
Echo Age in minutes %AgeMinutes%