В пакетных файлах DOS метод достижения определенных целей несколько запутан. К счастью, есть фантастический справочный сайт для пакетного скриптинга: Simon Sheppard SS64. (На этом же сайте есть много информации о Bash.)
Одна трудность заключается в выполнении ветвления в зависимости от того, является ли каталог пустым. Очевидное, 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
)
Благодарю.