> -- Евгений Темиргалеев писал(а):
> В подробностях логика детально расписана с примером.
Да вот логики-то я и не вижу. Вот цикл подбора:
new := какое-то имя;
MoveFile(old, new);
если файл new уже существует (ERROR_FILE_EXISTS) выбираем новое new и повторяем.

Остальные ошибки относятся к old или к каталогу и переименованием new не решаются.
Если у нас нет прав на создание odc0000, то нет и прав на создание odc0001.
Если old заблокикован, он не  разблокируется от изменения new.