How to sleep for 5 seconds in Windows's Command Prompt? (or DOS)

This question already has an answer here:

  • How to wait in a batch script? [duplicate] 6 answers

  • One hack I have seen is to (mis)use the ping command:

    ping 127.0.0.1 -n 6 > nul
    

    127.0.0.1 is the localhost IP address.
    -n 6 - there is a 1s delay between each ping, so for a 5s delay you need to do 6 pings.
    > nul - suppress the output.


    I'm very surprised no one has mentioned:

    C:> timeout 5
    

    NB Please note however (thanks Dan!) that timeout 5 means:

    Sleep anywhere between 4 and 5 seconds

    This can be verified empirically by putting the following into a batch file, running it repeatedly and calculating the time differences between the first and second echo s:

    @echo off
    echo %time%
    timeout 5 > NUL
    echo %time%
    

    Try the Choice command. It's been around since MSDOS 6.0, and should do the trick.

    Use the /T parameter to specify the timeout in seconds and the /D parameter to specify the default selection and ignore then selected choice.

    The one thing that might be an issue is if the user types one of the choice characters before the timeout period elapses. A partial work-around is to obfuscate the situation -- use the /N argument to hide the list of valid choices and only have 1 character in the set of choices so it will be less likely that the user will type a valid choice before the timeout expires.

    Below is the help text on Windows Vista. I think it is the same on XP, but look at the help text on an XP computer to verify.

    C:>CHOICE /?
    
    CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
    
    Description:
        This tool allows users to select one item from a list
        of choices and returns the index of the selected choice.
    
    Parameter List:
       /C    choices       Specifies the list of choices to be created.
                           Default list is "YN".
    
       /N                  Hides the list of choices in the prompt.
                           The message before the prompt is displayed
                           and the choices are still enabled.
    
       /CS                 Enables case-sensitive choices to be selected.
                           By default, the utility is case-insensitive.
    
       /T    timeout       The number of seconds to pause before a default
                           choice is made. Acceptable values are from 0 to
                           9999. If 0 is specified, there will be no pause
                           and the default choice is selected.
    
       /D    choice        Specifies the default choice after nnnn seconds.
                           Character must be in the set of choices specified
                           by /C option and must also specify nnnn with /T.
    
       /M    text          Specifies the message to be displayed before
                           the prompt. If not specified, the utility
                           displays only a prompt.
    
       /?                  Displays this help message.
    
       NOTE:
       The ERRORLEVEL environment variable is set to the index of the
       key that was selected from the set of choices. The first choice
       listed returns a value of 1, the second a value of 2, and so on.
       If the user presses a key that is not a valid choice, the tool
       sounds a warning beep. If tool detects an error condition,
       it returns an ERRORLEVEL value of 255. If the user presses
       CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
       of 0. When you use ERRORLEVEL parameters in a batch program, list
       them in decreasing order.
    
    Examples:
       CHOICE /?
       CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
       CHOICE /T 10 /C ync /CS /D y
       CHOICE /C ab /M "Select a for option 1 and b for option 2."
       CHOICE /C ab /N /M "Select a for option 1 and b for option 2."
    
    链接地址: http://www.djcxy.com/p/30344.html

    上一篇: 使用命令行恢复MYSQL转储文件

    下一篇: 如何在Windows的命令提示符下睡5秒钟? (或DOS)