Comment puis-je comparer les horodatages des fichiers dans un script batch?

Dans des fichiers batch DOS, la méthode de réalisation de certaines choses est quelque peu obscurci. Heureusement, il est un fantastique site de référence pour le lot de script: Simon Sheppard SS64. (Le même site a également beaucoup d'informations sur Bash.)

L'une des difficultés est de la ramification de l'exécution en se basant sur le fait qu'un répertoire est vide.
L'évidence if exist "%dir%\*.*" ne fonctionne pas. Mais il peut être fait avec une condition d'exécution astuce:

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

Un autre problème délicat est de ramification selon le contenu du fichier.
De nouveau qui peut être fait comme ceci:

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

Donc, ma question est:

Est-il un moyen de faire de la branche selon les horodatages des fichiers?

C'est le genre de chose que je veux:

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
)

Grâce.

InformationsquelleAutor Rhubbarb | 2009-11-06