我有一个批处理脚本来获取两个日期;文件夹之一,以及当前系统日期。
我想通过查看文件夹的日期是否比当前日期早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?
如果有人可以在这里帮助我,我将非常感谢。
答案 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%