When programming in emacs lisp, there is an easy way to show progress feedback to the user when a task will take some time. Here's a block of code from the elisp manual showing how to do it.
(make-progress-reporter "Collecting mana for Emacs..."
(dotimes (k 500)
(progress-reporter-update progress-reporter k))
I've incorporated this into my duplicate files code, linked below...