Wayne,
You have to add wait times into the uninstall script. The msiexec program runs asynchronously from the command line, so you need to wait for it to finish before going to the next uninstall.
Also there is an order that things need to be uninstalled. If you don't know that, you'll get stuck. (see page 2 of the attached pdf.)
Neither of these are mentioned in the documentation. I found them out be the school of hard knocks. See the attached PDF from my Creo Admin 102 talk at last June's conference.
David Haigh