batch-file Add delay to Batch file


This topic will teach you one of the many useful things to know in the scripting language, batch file; Adding a delay/pause/timeout to your batch file.



The simplest way to make a delay or pause for a certain amount of time, is with the standard command TIMEOUT. To make a timeout that lasts exactly one minute we type:

timeout /t 60

Now what is going on here?

First off we use the command TIMEOUT with the parameter /T (which simply means timeout) then we specify the amount of seconds to wait. In this case... 60 seconds.

Timeout with the parameter /NOBREAK

If we take the example from before and run that in a BATCH file: timeout /t 60 then while waiting those 60 seconds, you are actually able to break the timeout by pressing any key on your keyboard. To prevent this we simply add the parameter /NOBREAK to the end of it.

timeout /t 60 /nobreak

By doing this it will timeout for 60 seconds, and if you want to break the timeout you will have to press (CTRL-C) on your keyboard.

Silent timeout

When it's doing a timeout it will display:

Waiting for X seconds, press a key to continue ...
Waiting for X seconds, press CTRL+C to quit ... [This is with the /NOBREAK parameter]

To hide the message use the NUL argument (For explanation of NUL: Click Here)

timeout /t 60 > nul
timeout /t 60 /nobreak > nul


To make your script pause simply use the PAUSE command.


This will display the text Press any key to continue . . ., then add a newline on user input.

Let's say we want to create a "Hello World" program and after we click something on our keyboard, we want it to exit the program with the EXIT command.

echo Hello World

Here it uses the ECHO command to say "Hello World". Then we use the PAUSE command which displays Press any key to continue . . . and then we use the EXIT command to terminate the current BATCH script.

When it's pausing it will display:

Press any key to continue . . .

Hide the "Press any key to continue... prompt

To hide the message we redirect the output to a special device called nul. This isn't actually a real device, but whatever we send to it is thrown away.

pause > nul



One of the most used command to delay for a certain amount of time is ping.

Basic usage

PING -n 1 -w 1000

REM the -n 1 flag means to send 1 ping request.
REM the -w 1000 means when the IP( does not respond, go to the next command
REM is an non-existing IP so the -w flag can ping a delay and go to next command

This would output the following on your batch file/console:

C:\Foo\Bar\Baz>ping -n -w 1000

Pinging (Using 32 bytes of data)
Request timed out

Ping statistics for
    Packets: Sent = 2,Received = 0, Lost = 1(100% loss)

Hide the text echoed out

Just add >nul at the back of the command to redirect it to null.

ping -n w 1000 >nul

This would output nothing.



On older Windows system, timeout is not available. However, we can use the sleep command.


sleep 1

Very self-explanatory; sleep for 1 second. However, sleep is a deperacted command and should be replaced by timeout.


This command is available on old Windows system. Also SLEEP.exe is included in 2003 Resource Kit.

To use sleep.exe, put the executable file to %Windir%\System32 folder. Then you can use it as normal command.