Sleep command in batch file?

51,534

Solution 1

I think the information here: http://malektips.com/xp_dos_0002.html would explain it better than I.

There's still the case of error handling though (what if the remote machine isn't up?). cmd.exe is quite useless for doing any remote activities for the most part, using powershell would enable so much more.

EDIT::

In fact, you can execute a program stored locally with psexec (it gets copied across and executed locally server-side) - would using that be a more viable alternative?

Without knowing what commands you're intending to run it's hard to take it much further.

EDIT(2)::

If it's just the one command you're running, simply store it in a dedicated file, like 'remote_dir_listing.cmd', and then use psexec with:

psexec \\server -u <user> -p <pass> -c -f remote_dir_listing.cmd

This will force a copy of the local file to the remote side each time you execute it (in case you want to expand it). In this way, you bypass the need for a pause at all - only when psexec has got the pipes open will it run, and once it completes, it closes itself silently.

Solution 2

On Windows Vista / Windows 7 you can use the timeout command:

timeout /T [delay in seconds] /NOBREAK > NUL

On previous versions of Windows, you can use the ping command (the ping command has 1000 ms of delay between each iteration):

ping -n [delay in seconds + 1] 127.0.0.1 > NUL

Some versions of Windows (like Windows Server 2003) has the sleep.exe executable:

sleep [delay in seconds]

Note: Windows Resource kit for 2003 contains sleep.exe command.

If you don't know the Windows version, simply use the ping hack since it'll be available.

Solution 3

There is timeout command in more recent version of Windows:

timeout /T 10

Solution 4

Windows Resource kit for 2003 will install on Windows XP. It contains SLEEP.EXE which can be used from a command batch file.

download is here http://www.microsoft.com/download/en/details.aspx?id=17657

Share:
51,534
jayjyli
Author by

jayjyli

Programming student, enthusiast. I'm a software developer and have active side projects. Feel free to message me!

Updated on July 09, 2022

Comments

  • jayjyli
    jayjyli almost 2 years

    When I'm writing a batch file to run automatically, how do I write it so that when the batch file is run, it can pause for a couple seconds in between commands?

    Context:

    psexec \\server -u user -p pass cmd
    [there needs to be a pause here for psexec to establish a connection]
    dir /s >output.txt \\server\shared
    

    *Note: the reason I run the dir command server-side using psexec and not locally is because it's much faster to run dir on a local machine than remotely, and time is of the essence.

    When I'm doing this by hand it's obviously easy, I just wait. But running a batch file makes it run all commands at near instant speeds next to each other, regardless of the completion status of the last command. How do I put in a pause?