Как сравнить временные метки файлов в пакетном скрипте?
В пакетных файлах 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
)
Благодарю.