When writing a batch file to automate something on a Windows box, I've needed to pause its execution for several seconds (usually in a test/wait loop, waiting for a process to start). At the time, the best solution I could find uses ping (I kid you not) to achieve the desired effect. I've found a better write-up of it here, which describes a callable "wait.bat", implemented as follows:
@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul
You can then include calls to wait.bat in your own batch file, passing in the number of seconds to sleep.
Apparently the Windows 2003 Resource Kit provides a Unix-like sleep command (at last!). In the meantime, for those of us still using Windows XP, Windows 2000 or (sadly) Windows NT, is there a better way?
I modified the sleep.py
script in the accepted answer, so that it defaults to one second if no arguments are passed on the command line:
import time, sys
time.sleep(float(sys.argv[1]) if len(sys.argv) > 1 else 1)
I faced a similar problem, but I just knocked up a very short C++ console application to do the same thing. Just run MySleep.exe 1000 - perhaps easier than downloading/installing the whole resource kit.
SLEEP.exe
is included in most Resource Kits e.g. The Windows Server 2003 Resource Kit which can be installed on Windows XP too.In Notepad, write:
Now save as wait.bat in the folder C:\WINDOWS\System32, then whenever you want to wait, use:
I have been using this C# sleep program. It might be more convenient for you if C# is your preferred language:
The best solution that should work on all Windows versions after Windows 2000 would be:
The Resource Kit has always included this. At least since Windows 2000.
Also, the Cygwin package has a
sleep
- plop that into your PATH and include thecygwin.dll
(or whatever it's called) and way to go!