Start with the basics.
SLEEP is not a valid command on Windows XP, Vista or Windows 7. Don't know about Windows 8 but I am pretty sure it is not there as Microsoft replaced SLEEP with TIMEOUT starting with Windows Vista.
Windows Vista and above all have the CHOICE command builtin.
I actually have been replacing Sleep with Ping in my batches and setting it to x many pings to like Ping 127.0.0.1 -n 30 but so that I dont get an output to display causing the text to scroll, I have been passing the echo to just a file so nothing is displayed during the wait process before moving on such as Ping 127.0.0.1 -n 30 >WaitFile.txt which is overwritten each time a ping is echo'd to it so no fear of the file growing such as if you accidentally used >> appending instead.
For that fact that the batches are run between XP and 7 it was the best solution other than nesting sleep within the root of where the batch is running on each machine using the batch file.
*Note: For the delay to work a NIC has to be active or else it doesnt work so well and you end up passing an error condition to the WaitFile.txt and not getting your delay that you want. For the fact that all my systems are connected to a lan of some sort ether isolated private or to the internet etc it works ok.