Srekel Asked: 2009-07-10 06:49:51 +0800 CST2009-07-10 06:49:51 +0800 CST 2009-07-10 06:49:51 +0800 CST 在 bat 文件中等待几秒钟的更好方法?[复制] 772 可能重复: 如何在批处理文件中休眠? 这是在批处理文件中暂停一秒钟的 haxxorish 方式: PING 400.500.600.700 > NUL 我用谷歌搜索,但我不确定有没有更好的......有什么想法吗?:) windows batch-file 8 个回答 Voted Massimo 2012-09-27T11:08:00+08:002012-09-27T11:08:00+08:00 执行此操作的正确方法是使用timeoutWindows 2000 中引入的命令。 等待 30 秒: timeout /t 30 如果用户按下任何键,超时将被中断;但是,该命令也接受可选的 switch /nobreak,它有效地忽略用户可能按下的任何内容,除了显式CTRL-C: timeout /t 30 /nobreak 此外,如果您不希望命令在屏幕上打印其倒计时,您可以将其输出重定向到NUL: timeout /t 30 /nobreak > NUL Best Answer ThatGraemeGuy 2009-07-10T07:02:23+08:002009-07-10T07:02:23+08:00 您可以使用内置选择命令的“默认选择”和“超时”选项来创建延迟。 @echo off echo Hi, I'm doing some stuff echo OK, now I need to take a breather for 5 seconds... choice /d y /t 5 > nul echo Times up! Here I go again... Aaron Lewis 2012-09-27T10:39:58+08:002012-09-27T10:39:58+08:00 @echo off echo It is time for liftoff. timeout /t 5 echo Commencing crash sequence. timeout /t 5 击键会超过倒计时是唯一的缺点。 nray 2009-07-10T07:10:38+08:002009-07-10T07:10:38+08:00 这是我一直用来代替sleep.exe的, @ping -n 1 -w 1000 0.0.0.1 > NUL 更改-n x为等待(大约)x秒。 James 2009-07-10T06:58:05+08:002009-07-10T06:58:05+08:00 显然Windows 资源工具包中有 sleep 命令。其他网站也推荐使用选择..... KPWINC 2009-07-10T07:08:57+08:002009-07-10T07:08:57+08:00 带有计时器的 CHOICE 命令运行良好... 选择 /C:x /T:x,10 > NUL 还有一些“程序”可以运行,例如 WAIT 和 SLEEP 等。 希望这可以帮助。 Mark H 2009-11-18T00:01:05+08:002009-11-18T00:01:05+08:00 ping 一个(上图)是一个很好的 - 但只有在连接到网络时才有效。 下面是一些会延迟的脚本: @echo 关闭 设置 /a secondsend=%TIME:~6,2%+10 如果 %secondsend% GTR 59 设置 /a secondsend=secondsend-60 :在这儿等着 如果 %TIME:~6,2% NEQ %secondsend% goto waitthere 这将在 9 到 10 秒之间暂停(由于使用了 TIME 命令,第一秒不准确 - 可能在您开始前一秒的一半)。 如果通过将 'secondsend' 设置为 pc 时钟的当前秒数来工作,则向其添加 10(延迟)。如果它大于 59,则减掉 60,因为它会缠绕到下一分钟。然后有一个循环使用“secondsend”检查当前秒 - 一旦它们匹配脚本继续。 如果您想延迟不同的时间段 2-59,然后更改第二行中的 10(我说 2-59,因为第一秒可能不是整秒,所以可以说 2,例如 1.2 秒)。 抱歉,它太啰嗦了,但我想我会解释一下这个例程是如何工作的。 Zak Willis 2011-02-03T08:38:36+08:002011-02-03T08:38:36+08:00 我刚刚用 C# 写了一个简单的 exe。只需使用 statis System.Threading.Sleep,并获取命令行参数并将其转换为整数。 做了5分钟。
执行此操作的正确方法是使用
timeout
Windows 2000 中引入的命令。等待 30 秒:
如果用户按下任何键,超时将被中断;但是,该命令也接受可选的 switch
/nobreak
,它有效地忽略用户可能按下的任何内容,除了显式CTRL-C
:此外,如果您不希望命令在屏幕上打印其倒计时,您可以将其输出重定向到
NUL
:您可以使用内置选择命令的“默认选择”和“超时”选项来创建延迟。
击键会超过倒计时是唯一的缺点。
这是我一直用来代替sleep.exe的,
更改
-n x
为等待(大约)x
秒。显然Windows 资源工具包中有 sleep 命令。其他网站也推荐使用选择.....
带有计时器的 CHOICE 命令运行良好...
选择 /C:x /T:x,10 > NUL
还有一些“程序”可以运行,例如 WAIT 和 SLEEP 等。
希望这可以帮助。
ping 一个(上图)是一个很好的 - 但只有在连接到网络时才有效。
下面是一些会延迟的脚本:
@echo 关闭
设置 /a secondsend=%TIME:~6,2%+10
如果 %secondsend% GTR 59 设置 /a secondsend=secondsend-60
:在这儿等着
如果 %TIME:~6,2% NEQ %secondsend% goto waitthere
这将在 9 到 10 秒之间暂停(由于使用了 TIME 命令,第一秒不准确 - 可能在您开始前一秒的一半)。
如果通过将 'secondsend' 设置为 pc 时钟的当前秒数来工作,则向其添加 10(延迟)。如果它大于 59,则减掉 60,因为它会缠绕到下一分钟。然后有一个循环使用“secondsend”检查当前秒 - 一旦它们匹配脚本继续。
如果您想延迟不同的时间段 2-59,然后更改第二行中的 10(我说 2-59,因为第一秒可能不是整秒,所以可以说 2,例如 1.2 秒)。
抱歉,它太啰嗦了,但我想我会解释一下这个例程是如何工作的。
我刚刚用 C# 写了一个简单的 exe。只需使用 statis System.Threading.Sleep,并获取命令行参数并将其转换为整数。
做了5分钟。