Как сравнить временные метки файлов в пакетном скрипте?

В пакетных файлах DOS метод достижения определенных целей несколько запутан. К счастью, есть фантастический справочный сайт для пакетного скриптинга:Саймон Шеппардс SS64, (На том же сайте также есть много информации оудар.)

Одной из трудностей является выполнение ветвления в зависимости от того, пуст ли каталог. Очевидноеif exist "%dir%\*.*" Безразлично»т работа. Но это можно сделать с помощью этого условного трюка:

( dir /b /a "%dir%" | findstr . ) > nul && (
  echo %dir% non-empty
) || (
  echo %dir% empty
)

Другая неудобная проблема - это ветвление в соответствии с содержимым файла. Опять же, это можно сделать так:

( fc /B "%file1%" "%file2%" | find "FC: no differences encountered" ) > nul && (
  echo "%file1%" and "%file2%" are the same
) || (
  echo "%file1%" and "%file2%" are different
)

Итак, мой вопрос:

Есть ли способ сделать ветку по меткам времени файлов?

Это то, что я хочу:

REM *** pseudo-code!
if "%file1%" is_newer_than "%file2%" (
  echo "%file1%" is newer
) else if "%file1%" is_older_than "%file2%" (
  echo "%file2%" is newer
) else (
  echo "%file1%" and "%file2%" are the same age
)

Благодарю.

Ответы на вопрос(6)

Ваш ответ на вопрос