Mit SHFileOperation müsste es funktionieren. Hier ein
Beitrag aus der Code-Library, der dir eventuell hilft, mir hat er jedenfalls sehr geholfen. Interessant für dich wäre das Flag FOF_RENAMEONCOLLISION: "Datei umbenennen, wenn diese bereits im Zielverzeichnis existiert (Kopie 1 von ...) ".