Управление датами в пакетных файлах практически невозможно получить разумным способом. Единственное, что вы можете сделать, это поддержка вашей культуры и игнорирование остальных.
Однако, если у вас есть имя файла в параметре для партии (или подпрограммы), вы можете использовать %~t1
. В противном случае следующее:
for %%x in (%file%) do set datetime=%%~tx
На моей машине это выходит как «2009-08-28 16:13», который затем может быть разобранной на отдельные части:
:dissect_date_time
for /f "tokens=1-5 delims=-: " %%a in (%1) do set year=%%a&set month=%%b&set day=%%c&set hour=%%d&set minute=%%e
goto :eof
это подпрограмма вы может звонить по телефону
call :dissect_date_time %datetime%
, а затем у вас есть отдельные части в соответствующих переменных окружения. Адаптируйте соответственно в соответствии с вашим форматом даты и времени. Это сильно использует for
в качестве токенизатора.
После того, как у вас есть отдельные детали, вы можете попробовать выяснить, сколько лет файл, просто делая тот же процесс с текущей датой/временем и вычитанием. Не будет весело, но работает.
Примечание: Это очень вероятно не имеет ничего общего с DOS, за исключением того, что синтаксис языка интерпретатора командной строки проистекает из тех дней (и CP/M до этого). Вы бы не включили тег CP/M, верно? – Joey