ИМХО, имеет смысл хранить заданное кол-во логов, например, 2, а остальные удалять, и не задумываться о датах. Главное, чтобы логи бесконечно не накапливались, а батник в назначенном задании это периодически отслеживал. Так как программа каждые сутки создает файл типа: ftpГГГГММДД.log и если ориентируемся на дату/время последней модификации самого файла, то
Код:

@Echo Off
Set Where=D:\Tmp
FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "%Where%\ftp*.log" /B /A:-D /O:-D /T:W 2^>nul`) DO Echo Del "%Where%\%%f"
Если ориентируемся на имена (в идеале, если злодейскими ручками никто логи не правит, результат будет один) For будет иметь вид
Код:

FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "%Where%\ftp*.log" /B /A:-D /O:-N 2^>nul`) DO Echo Del "%Where%\%%f"
Если батник в папке с логами, то
Код:

@Echo Off
FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "ftp*.log" /B /A:-D /O:-D /T:W 2^>nul`) DO Echo Del "%%f"
или соответственно
FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "ftp*.log" /B /A:-D /O:-N 2^>nul`) DO Echo Del "%%f"
Чуть не забыл, чтобы батник реально удалял файлы, уберите слово Echo (я его вставил для отладки) в For перед командой Del
По идее, можно совсем обойтись без батника, используя CMD и For в назначенном задании, например:
Код:

cmd /Q /C FOR /F "usebackq skip=2 delims=" %f IN (`DIR "D:\Tmp\ftp*.log" /B /A:-D /O:-N`) DO Del "D:\Tmp\%f" >nul