How to wait in a batch script? [duplicate]

2019-01-02 15:12发布

Possible Duplicate:

Sleeping in a DOS batch file

I am trying to write a batch script and trying to wait 10 seconds between 2 function calls. The command:

sleep 10

Does not make the batch file wait for 10 seconds.

I am running Windows XP.

Note: This is not a complete duplicate of Sleeping in a batch file as the other question is about also about python, while this is about windows batch files.

6条回答
栀子花@的思念
2楼-- · 2019-01-02 15:35

I actually found the right command to use.. its called timeout: http://www.ss64.com/nt/timeout.html

查看更多
无色无味的生活
3楼-- · 2019-01-02 15:37

What about:

@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs
查看更多
听够珍惜
4楼-- · 2019-01-02 15:42

You can ping an address that surely doesn't exist and specify the desired timeout:

ping 192.0.2.2 -n 1 -w 10000 > nul

And since the address does not exists, it'll wait 10,000 ms (10 seconds) and returns.

  • The -w 10000 part specifies the desired timeout in milliseconds.
  • The -n 1 part tells ping that it should only tries once (normally it'd try 4 times).
  • The > nul part is appended so the ping command doesn't output anything to screen.

You can easily make a sleep command yourself by creating a sleep.bat somewhere in your PATH and use the above technique:

rem SLEEP.BAT - sleeps by the supplied number of seconds

@ping 192.0.2.2 -n 1 -w %1000 > nul

NOTE: The 192.0.2.x address is reserved as per RFC 3330 so it definitely will not exist in the real world. Quoting from the spec:

192.0.2.0/24 - This block is assigned as "TEST-NET" for use in documentation and example code. It is often used in conjunction with domain names example.com or example.net in vendor and protocol documentation. Addresses within this block should not appear on the public Internet.

查看更多
其实,你不懂
5楼-- · 2019-01-02 15:52

You'd better ping 127.0.0.1. Windows ping pauses for one second between pings so you if you want to sleep for 10 seconds, use

ping -n 11 127.0.0.1 > nul

This way you don't need to worry about unexpected early returns (say, there's no default route and the 123.45.67.89 is instantly known to be unreachable.)

查看更多
心情的温度
6楼-- · 2019-01-02 15:53

Well, does sleep even exist on your Windows XP box? According to this post: http://malektips.com/xp_dos_0002.html sleep isn't available on Windows XP, and you have to download the Windows 2003 Resource Kit in order to get it.

Chakrit's answer gives you another way to pause, too.

Try running sleep 10 from a command prompt.

查看更多
高级女魔头
7楼-- · 2019-01-02 15:57

I used this

:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top
查看更多
登录 后发表回答