How to sleep or wait in Windows batch file ?


👤 Diwas Poudel    🕒 Jan 18 2022    📁 TECH

The Sleep/Wait Command is a very useful command that is used to pause for a set amount of time while a batch script is being executed. To put it another way, this command makes it easier to run a command for a set amount of time.

You may find yourself in a situation where you want to run a series of command lines one after the other, but with a time delay between them. In this case, the sleep command will come in handy. This article will show you how to use the sleep command in Windows batch scripts.

Note: Windows does not have a direct Sleep command as provided in Linux, we must use a different method to achieve the same result. Furthermore, no root privileges are required to implement in a batch script.

1) Using timeout to achieve sleep function

timeout is an old Windows command introduced in Windows 2000 that is used to add a delay between two tasks.

Usage :

timeout /t [/nobreak]

Here,

/t  Specify the number of seconds to wait (between -1 and 99999) before the command processor continues processing. When you enter the value -1, the computer will wait indefinitely for a keystroke. Also, a number of seconds in a nonwhole number like 1.5 is not accepted.
/nobreak Specifies to ignore user keystrokes. But accepts CTRL + C strokes which directly terminate the batch.
/? Displays help at the command prompt.
timeout-help
fig. timeout help

 

Example1: Basic timeout in Batch Script

@echo off
echo First Task Here ...
echo Approximately 10-second delay
timeout /t 10 
echo Second Task Here ...
pause

We have two tasks here, and we have inserted a timeout script that waits for 10 seconds for the First Task to complete before starting the Second Task.

Drawback: This will show unnecessary "Waiting for 0 seconds, press a key to continue..." and when you press any key it will continue to the next task. It is a good way of letting the user know the safe escape route to skip sleep.

Example2: Timeout with only CTRL + C key to Skip

@echo off
 .....
timeout /t 10 /nobreak
.....
pause

Here, /nobreak does not allow to break or skip sleep with any key. But pressing the CTRL + C key combination will force to close the batch processing and close the program immediately.

Also read: Run multiple commands in one line in Powershell and Cmd

Example 3: Sleep without timeout message

@echo off
....
timeout /t 15 /nobreak > nul
....
pause

Appending >nul part so that command does not display output anything to screen. It suppresses the countdown time.

Another best use case of the timeout is as follows:

calc && timeout 5 && notepad

This will open the calculator, then wait 5 seconds before opening the notepad. Remember to include and && between each block. You can continue to cascade it like shown below

calc && timeout 3 && notepad && timeout 4 && regedit

This will open the calculator, then wait 3 seconds for the notepad to open, then wait 4 seconds for the registry editor to open.

Note that: Ctrl + C will break the whole program.

Drawbacks of TIMEOUT 

Here are some drawbacks of timeout :

  • Cannot perform delay in a fraction of a second. ie. like timeout /t 0.5 does not work. And will give
    an error message stating "Error: Invalid value for timeout (/T) specified. Valid range is -1 to 99999)
  • Cannot use a second value greater than 99999

2) Using Ping to Delay to achieve sleep function

@echo off
.....
ping localhost -n 10 > nul
.....
pause

Ping is actually used to determine whether or not a resource responds to a request. Ping sends a request to the resource and waits one second for a response. As a result, it is useful to use it as a delay function. Even if it waits for one second, it may receive a response in a few milliseconds. However, as soon as you ping the last packet here in the tenth request, it will automatically stop.

Also read: How to list all environment variables?

The resource we are pinging here is localhost, which is a local loopback, and it responds instantly within a millisecond but must wait 1 second each. And here in the example, we are waiting for nearly 10 seconds before executing the next line.

Note that: Ctrl + C will break delay.

Using Ping to Delay with nonexisting IP

@echo off
....
ping 192.4.4.4 -n 1 -w 10000 > nul
....
pause

Here waiting for 10 seconds. Here we must ping to a non-existing IP address and if it exists it will not work. -w indicates waiting and here it waits for 10000 ms, you can change this value. And by default ping will request 4 times to the resource. Here, -n 1 indicates request only 1 time.

Using Ping to Delay in less than 1 second.

Just replace 10000ms with anythings smaller than 1000ms. like 500ms as shown below

ping 192.4.4.4 -n 1 -w 500 > nul

Using Powershell in Command to delay 

Simply follow the simple example below if you want to use Powershell commands from the command line:

Example 1

powershell -command "Please Wait for 5 second" -s 5

type this command in the command line or batch file. This command will hold the screen for 5 seconds. You can change from 5 to any number. This can be useful if a Windows command fails or has an issue.

Example 2:

powershell -nop -c "& {sleep -m 5}"

FAQ:

What is the WaitFor command?

Waitfor.exe is a small utility that is included with Windows 7 and later versions. This program is designed to listen for and respond to a named signal. Visit here for more info.

Is there a command in Windows that allows you to sleep and wait?

There is no sleep and wait for command in the windows version. The best alternative is the Timeout command as explained above. In Linux, you can simply use: sleep n in the terminal where n is time in second.

How to sleep for five seconds in a batch file?

A simple way to do this in a batch file before and after the task you want to sleep or hold is as follows:

timeout /t 5 /nobreak >nul

👊 MORE FROM OURTECHROOM 👊



Ourtechroom Main Logo
Hello and thank you for visiting Ourtechroom.com! We'll talk about everything from how to troubleshoot tech issues, to emerging technology, games, gadgets, and fun facts about technology.
Contact : ourtechroom777@gmail.com