Ответ 1
Как я уже отмечал выше, чистая партия ужасна в математике по дате. Здесь гибридная партия /JScript script, которая легко вычислит возраст файла (изменить: или каталог). Не нужно беспокоиться о часовых опросах, дневных изменениях, летнем времени или любом другом мусоре. Это все легкое лихорадочное лимонное лимонное яйцо, основанное на миллисекундах с полуночи 1 января 1970 года.
@if (@[email protected]) @then
:: age.bat filename.ext
:: get age of file in minutes
@echo off
setlocal
if "%~1"=="" echo Usage: age.bat filename.ext && goto :EOF
if not exist "%~1" echo %1 not found. && goto :EOF
for /f %%I in ('cscript /nologo /e:JScript "%~f0" "%~1"') do (
echo %1 is %%I minutes old.
rem :: Now use "if %%I gtr 4" here to take whatever actions you wish
rem :: on files that are over 4 minutes old.
)
goto :EOF
:: end batch portion / begin JScript
@end
var fso = new ActiveXObject("scripting.filesystemobject"),
arg = WSH.Arguments(0),
file = fso.FileExists(arg) ? fso.GetFile(arg) : fso.GetFolder(arg);
// Use either DateCreated, DateLastAccessed, or DateLastModified.
// See http://msdn.microsoft.com/en-us/library/1ft05taf%28v=vs.84%29.aspx
// for more info.
var age = new Date() - file.DateLastModified;
WSH.Echo(Math.floor(age / 1000 / 60));
Для получения дополнительной информации о гибридных сценариях пакетной /JScript см. эту страницу GitHub. Используемый выше стиль похож на Hybrid.bat на этой странице.