Board logo

标题: [ 新手习题 4 ] 批处理循环十秒倒计时 [打印本页]

作者: wxcute    时间: 2008-11-10 18:47     标题: [ 新手习题 4 ] 批处理循环十秒倒计时

要求:从 10 数到 0;
   方法不限;
   不需要精确地按秒来显示,显示成 10 行也没关系。
[attach]569[/attach]

目的:掌握几种循环的用法

评分:可用不同方法,第一不同答案者 10 分;
   答对有分,答错不扣分。

可参考:
for语句从入门到精通(for /l 部分)
http://bbs.bathome.net/thread-2189-1-1.html
if 命令示例详解
http://bbs.bathome.net/thread-55-1-1.html
shift 命令详解
http://bbs.bathome.net/thread-107-1-3.html
上一题:[ 新手练习 3 ] 简易密码登录
http://bbs.bathome.net/thread-2492-1-1.html
下一题:[ 新手练习 5 ] 随机显示星期几
http://bbs.bathome.net/thread-2564-1-1.html

[ 本帖最后由 wxcute 于 2008-11-17 11:34 编辑 ]
作者: pusofalse    时间: 2008-11-10 19:53

只要知道循环命令for或goto 的基本用法就能解答此题了。
如果要有延时的效果,就要知道任何命令的运行都是要消耗时间的,想办法把命令的结果屏蔽掉就能有延时的效果。
如果要在同一行中显示就得要借助set /p了。

综合性题目,适合新手练功。。。
作者: BBCC    时间: 2008-11-10 20:42

  1. @for /l %%a in (10,-1,0) do (echo %%a)
复制代码

  1. @echo off
  2. set "num=11 10 9 8 7 6 5 4 3 2 1 0"
  3. call :print %num%
  4. :print %num%
  5. shift /1
  6. echo. %1
  7. if "%1" equ "" (echo OVER!&pause&exit) else (goto :print)
复制代码


[ 本帖最后由 BBCC 于 2008-11-10 21:04 编辑 ]
作者: hlzj88    时间: 2008-11-10 22:34

  1. @echo off
  2. for /l %%i in (10,-1,1) do echo %%i
  3. pause
复制代码
刚看到,来练习一下

[ 本帖最后由 hlzj88 于 2008-11-10 22:36 编辑 ]
作者: nomyself    时间: 2008-11-11 19:44

延时不是很清楚。先试下一种了。
  1. @echo off
  2. for /l %%a in (10,-1,0) do @ping -n 2 127.1>nul>nul & echo %%a
  3. pause
复制代码

作者: sylovanas    时间: 2008-11-11 20:21

  1. @IF NOT DEFINED DEBUG @ECHO OFF
  2. SET A=
  3. :LOOP
  4. SET /A A+=1
  5. ECHO %A%
  6. PING -w 2 -n 2 127.0.0.1 >NUL 2>&1
  7. IF %A% EQU 10 GOTO END
  8. GOTO LOOP
  9. :END
  10. ECHO E.O.F.
复制代码

作者: akiraakito    时间: 2008-11-14 20:49

  1. @echo off
  2. for /l %%a in (10,-1,1) do (
  3.     echo %%a
  4. )
  5. pause>nul
复制代码

作者: sd6733531    时间: 2008-11-16 08:12

  1. @echo off
  2. echo --------倒计时-------------
  3. for /l %%i in (10,-1,0) do (echo %%i)
  4. echo ---------------------------
  5. pause>nul
复制代码

[ 本帖最后由 sd6733531 于 2008-11-16 08:14 编辑 ]
作者: stalker    时间: 2008-11-18 19:43

  1. @echo off
  2. for /l %%i in (10 -1 0) do echo %%i
  3. pause>nul
复制代码

作者: h5599859    时间: 2008-11-19 12:10

@echo off
for /l %%a in (10,-1,0) do @ping -n 2 127.1>nul&cls & echo %%a
pause >nul
作者: firewolf85    时间: 2008-12-7 18:56

  1. @echo off
  2. for %%i in (10 9 8 7 6 5 4 3 2 1) do (
  3. echo %%i
  4. for /l %%i in (1 1 10) do (ping 1>nul)
  5. cls
  6. )
  7. pause>nul
复制代码

作者: qqha001    时间: 2008-12-11 16:03

@echo off
for /l %%i in (10 -1 1) do (
   echo %%i
   ping /n 1 127.1>nul
)
pause
作者: heng520    时间: 2008-12-12 14:51

我也来一下。。
  1. @echo off
  2. set /p a=请输入:
  3. cls
  4. for /l %%i in (%a% -1 0) do echo 离爆炸时间还有:%%i秒!----快跑----^>&ping -n 2 127.1 >nul&cls
复制代码

作者: RiceFans    时间: 2008-12-23 11:38

学习与游戏并进(尽自己的努力把前面的知识加入进来):

@echo off
    echo      正在进入倒计时10秒....请稍候....
    for /l %%a in (10,-1,0) do ( echo %%a
          if %%a equ 0 goto end
    for /l %%b in (1 1 3600) do ver>nul)
%0&cls

:end
    (mode con cols=60 lines=15
    set c=00F53462B89AC7ED10
    set /a num=%random%%%18
    call set col=%%c:~%num%,2%%
    COLOR %col%
    echo.
    echo.
    echo                  游戏正在装载中.......
    ping -n 1 127.1>nul&goto end)
作者: glbosom    时间: 2008-12-23 22:45

  1. echo off
  2. set num=0
  3. :start
  4. cls
  5. set /a num+=1
  6. set str=10 9 8 7 6 5 4 3 2 1 0
  7. for /f "tokens=%num% delims= " %%a in ("%str%") do (
  8. echo.&echo          %%a&ping -n 2 127.1>nul)
  9. if not "%num%"=="11" goto start
  10. echo 已经完成请按任意键退出
  11. pause>nul
复制代码

作者: zhouyongjun    时间: 2008-12-24 16:02

  1. @echo off&setlocal enabledelayedexpansion
  2. color 1f&mode con cols=20 lines=12
  3. echo.
  4. set num=6 -1 2 -3 , 6 -1 2 -1 2 -1 , 6 -1 2 -1 2 -1 , 6 -1 2 -1 2 -1 , 6 -1 2 -3 # ^
  5. 6 -4 , 6 -1 4 -1 , 6 -4 , 12 -1 , 6 -4 # ^
  6. 6 -4 , 6 -1 4 -1 , 6 -4 , 6 -1 4 -1 , 6 -4 # ^
  7. 6 -4 , 12 -1 , 12 -1 , 12 -1 , 12 -1 # ^
  8. 6 -4 , 6 -1 , 6 -4 , 6 -1 4 -1 , 6 -4 # ^
  9. 6 -4 , 6 -1 , 6 -4 , 12 -1 , 6 -4 # ^
  10. 6 -1 2 -1 , 6 -1 2 -1 , 6 -4 , 10 -1 , 10 -1 # ^
  11. 6 -4 , 12 -1 , 6 -4 , 12 -1 , 6 -4 # ^
  12. 6 -4 , 12 -1 , 6 -4 , 6 -1 , 6 -4 # ^
  13. 9 -1 , 9 -1 , 9 -1 , 9 -1 , 9 -1 # ^
  14. 6 -4 , 6 -1 4 -1 , 6 -1 4 -1 , 6 -1 4 -1 , 6 -4 #
  15. for %%i in (%num%) do (
  16. set a=%%i&set b=!a:-=!
  17. if "%%i"=="," echo.
  18. if "%%i"=="#" ping/n 2 127.1 >nul&cls&echo.
  19. if %%i lss 0 (for /l %%a in (1,1,!b!) do set/p=▓<nul) else (
  20. for /l %%b in (1,1,!b!) do set/p= <nul
  21. ))
复制代码

作者: xiong8707    时间: 2008-12-24 20:51     标题: 这个可以

@echo off
echo 10&@ping 127.0.0.1 -n 2 >nul&cls
echo 9&@ping 127.0.0.1 -n 2 >nul&cls
echo 8&@ping 127.0.0.1 -n 2 >nul&cls
echo 7&@ping 127.0.0.1 -n 2 >nul&cls
echo 6&@ping 127.0.0.1 -n 2 >nul&cls
echo 5&@ping 127.0.0.1 -n 2 >nul&cls
echo 4&@ping 127.0.0.1 -n 2 >nul&cls
echo 3&@ping 127.0.0.1 -n 2 >nul&cls
echo 2&@ping 127.0.0.1 -n 2 >nul&cls
echo 1&@ping 127.0.0.1 -n 2 >nul&cls
echo 0&@ping 127.0.0.1 -n 2 >nul&cls
作者: xiong8707    时间: 2008-12-27 00:47     标题: 通过一天的学习,又写了一个;

[code]
@echo off
echo 你的电脑马上就要被此程序摧毁。
ping 127.0.0.1>nul
cls
for /l %%b in (10,-1,0) do cls&echo 倒计时开始!!!%%b &for /l %%a in (10000,-1,0) do echo %%a>nul
color 1f&mode con cols=550 lines=270
:aaa
color 11
color 21
color 31
color 41
color 51
color 61
color 71
color 81
color 91
color a1
color b1
color c1
color d1
color e1
color f1
goto aaa
[/cpde]
修改了一下,希望能把被删除的分补过来...

[ 本帖最后由 xiong8707 于 2008-12-29 22:13 编辑 ]
作者: xiong8707    时间: 2008-12-27 00:51

提示: 该帖被管理员或版主屏蔽
作者: wxcute    时间: 2008-12-28 19:23     标题: 回复 18 楼 [ xiong8707 ] 的帖子

请勿在新手区放恶作剧代码
请及时修改,否则扣分。
作者: xiong8707    时间: 2008-12-28 23:21     标题: 迷糊

又不是真的把电脑摧毁...
作者: tireless    时间: 2008-12-29 22:48

  1. @echo off
  2. set /p=倒计时 10 秒<nul
  3. ping -n 2 127.1>nul
  4. set /p= 9 <nul
  5. ping -n 2 127.1>nul
  6. for /l %%a in (8 -1 1) do (
  7.   set /p=%%a<nul
  8.   ping -n 2 127.1>nul
  9. )
复制代码

作者: hidden    时间: 2009-1-12 22:40

@echo off
for /l %%f in (10 -1 1) do echo %%f
pause>nul
作者: hidden    时间: 2009-1-12 22:53

@echo off
for /l %%a in (10 -1 1) do (
  echo %%a
  ping -n 2 127.1>nul
)
作者: skuny    时间: 2009-1-13 13:30

@ECHO OFF
set /a m=11
:111
set /a m-=1
if %m% geq 1 echo %m%&goto 111
pause
作者: zcy85611    时间: 2009-1-13 13:41

  1. @echo off
  2. color 0a
  3. for /l %%a in (10 -1 1) do (
  4. echo %%a
  5. for /l %%a in (1 1 1000) do ver>nul
  6. )
  7. pause>nul
复制代码

作者: p05401144    时间: 2009-1-14 08:31

虽然不一秒一个,但是也很慢
@echo off
for /l %%i in (10,-1,1) do (
for /l %%j in (10000,-1,1) do (echo %%j>nul)
echo %%i
)
pause>nul
作者: denev2004    时间: 2009-2-3 17:46

为什么不能用ping命令?
ping了一个后echo一个10,ping 了下一个再echo一个9 。 。 。 。或者在for中镶嵌ping和echo也可以呀。 。 。
作者: kingerpk    时间: 2009-2-5 15:27

  1. @for /l %%a in (1,1,10) do echo %%b & ping -n 2 127.1>nul>nul & cls
  2. pause
复制代码

作者: zhangenming    时间: 2009-2-8 13:30

@echo off
for /l %%a in (1,1,10) do (
for /l %%i in (1,1,99) do (
ver>nul
)
echo %%a
)
pause



觉的代码有一点毛病  怎么修改啊  呵呵
就这一段:
)
echo %%a
)
作者: Batcher    时间: 2009-2-8 16:21     标题: 回复 30楼 的帖子

你觉得有啥毛病?
作者: zhangenming    时间: 2009-2-8 16:54     标题: 回复 31楼 的帖子

)
echo %%a
)

我觉的两个“)”应该连这吧
这样的格式:



可是那echo %%a应该放到哪里?
我觉的毛病出在了这里~
作者: a309624606    时间: 2009-2-10 14:03     标题: 回复 10楼 的帖子

很好你的  如果在开始的时候加上汉字的倒计时就更好了
作者: ccmvhd    时间: 2009-2-11 12:24

@echo off
set n=11
ne
set/a n-=1
if %n% gtr 0 (
echo %n%
ping /n 3 127.1>nul
goto :one
) else goto :end
:end
exit
作者: Batcher    时间: 2009-2-11 12:34     标题: 回复 32楼 的帖子

请养成代码缩进的好习惯
  1. @echo off
  2. for /l %%a in (1,1,10) do (
  3.   for /l %%i in (1,1,99) do (
  4.     ver>nul
  5.   )
  6.   echo %%a
  7. )
  8. pause
复制代码

作者: aresk    时间: 2009-2-13 17:27

  1. @echo off
  2. for /l %%i in (10 -1 0) do (
  3. echo %%i
  4. ping -n 3 127.1>nul
  5. cls
  6. )
  7. pause&exit
复制代码

作者: irresolute    时间: 2009-2-15 18:29     标题: 偶来试下

@echo off
for /l %%i in (10,-1,1) do (
echo %%i
ping -n 2 127.1>nul)
pause>nul
作者: TonyW    时间: 2009-2-22 11:20

  1. @echo off
  2. for /l %%i in (10 -1 1) do echo %%i & ping -n 2 0.0>nul
  3. pause
复制代码
参照论坛:http://bbs.bathome.net/thread-107-1-3.html
写出来的,在ping那段做了修改,但还是不明白ping的那一段的意义.望各位看到的话帮帮小弟,呵呵~感激不尽!!
作者: zjw767676    时间: 2009-2-25 23:59

  1. @echo off & setlocal EnableDelayedExpansion
  2. for /l %%i in (10 -1 0) do (
  3.                        set a=%%i
  4.                        set/p="!a!>>"<nul
  5.                        sleep 400
  6. )
  7. pause>nul
复制代码

作者: keen    时间: 2009-2-26 09:43

自习写的两种答案:
第一种if和set构造循环:
@echo off
setlocal enabledelayedexpansion
set /a a=11
:begin
set /a a-=1
if !a! lss 0 pause & exit
echo !a!
ping -n 2 -w 1 127.1 >nul
goto begin


第二种,for循环:
@echo off
for /l %%i in (10,-1,0) do ping -n 2 -w 1 127.1 >nul & echo %%i
pause
作者: cjiabing    时间: 2009-2-26 10:11

  1. for /l %%a in (10,-1,1) do echo 单数倒计时——逐个输出: %%a&ping /n 2 127.0.1>nul&cls
  2. echo 竖向倒计时
  3. for /l %%a in (10,-1,1) do echo %%a&ping /n 2 127.0.1>nul
  4. echo 横向倒计时
  5. for /l %%a in (10,-1,1) do set/p a= ^%%a<nul&ping /n 2 127.0.1>nul
  6. echo.
  7. pause
复制代码

以前写的,出错了,为了避免误导他人修改了一下。

[ 本帖最后由 cjiabing 于 2010-9-18 23:20 编辑 ]
作者: cainiao736    时间: 2009-3-26 21:50

  1. @echo off
  2. for /l %%i in (10,-1,1) do echo %%i
  3. pause
复制代码

循环延迟暂时没搞懂

[ 本帖最后由 cainiao736 于 2009-3-26 22:01 编辑 ]
作者: huqianghui    时间: 2009-3-27 14:06

@echo off
echo %TIME%
for /L %%i in (10,-1,1) do (
ping /n 3 127.0.0.1>nul & echo %%i)
echo %TIME%
pause
作者: flyingsand    时间: 2009-3-28 14:20

刚好前段时间做过,结合了进度条的,不过进度条是参考别人的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%t in (10,-1,1) do (
  4. cls
  5. set t=%%t
  6. set a=■
  7. set b=0
  8. echo.
  9. echo                       倒计时 !t!
  10. echo.
  11. echo        ╔══════════════════════════════╗
  12. echo.
  13. echo         ╚══════════════════════════════╝
  14. call :jindu
  15. )
  16. goto exit
  17. :jindu
  18. ping -n 1 127.1 >nul
  19. cls
  20. set a=%a%■■■
  21. set /a b=b+10
  22. echo.
  23. echo                       倒计时 !t!
  24. echo.
  25. echo        ╔══════════════════════════════╗
  26. echo          %a%
  27. echo         ╚══════════════════════════════╝
  28. if %b% geq 100 echo & goto :eof
  29. goto jindu
  30. :exit
  31. exit
复制代码

作者: energy2009    时间: 2009-4-9 22:06

  1. @echo off
  2. for /l %%i in (10,-1,1) do echo %%i&ping -n 2 127.1>nul
  3. pause
复制代码

作者: energy2009    时间: 2009-4-9 22:07

  1. @echo off
  2. for /l %%i in (10,-1,1) do echo %%i&ping -n 2 127.1>nul
  3. pause
复制代码

作者: sjzong    时间: 2009-4-22 02:17     标题: 我也来一个!

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (10 -1 0) do (
  4. if %%a equ 10 (set/p=%%a<nul) else (set/p= %%a<nul)
  5. for /l %%1 in (1 1 100) do (call echo %time%>nul)
  6. )
复制代码

[ 本帖最后由 sjzong 于 2009-4-22 02:19 编辑 ]
作者: inittab    时间: 2009-4-22 09:24

不用ping .用%time% 比较精确
  1. @echo off
  2. set /a t=10,t1=0
  3. :begin
  4. set t0=%t1%
  5. set tt=%time%
  6. set t1=%tt:~6,2%
  7. if %t1% neq %t0% (set/p=%t% <nul&set/a t-=1)
  8. if %t% lss 0 (goto :eof)
  9. goto :begin
复制代码

[ 本帖最后由 inittab 于 2009-7-5 21:15 编辑 ]
作者: luo603294    时间: 2009-4-22 10:06

  1. @echo off
  2. for /l %%i in (10,-1,1) do (echo.%%i
  3. ping -n 2 127.1>nul
  4. )
  5. pause
复制代码
嘿嘿 终于知道怎么帖代码的了^_^
作者: xiaotian    时间: 2009-5-5 16:16

@echo off
for /l %%i in (10,-1,0) do echo %%i
pause>nul
作者: hacker_    时间: 2009-6-27 09:10

本人菜用得也是笨方法
@echo off
echo 10
ping -n 2 127.1 >nui
echo 9
ping -n 2 127.1 >nui
echo 8
ping -n 2 127.1 >nui
echo 7
ping -n 2 127.1 >nui
echo 6
ping -n 2 127.1 >nui
echo 5
ping -n 2 127.1 >nui
echo 4
ping -n 2 127.1 >nui
echo 3
ping -n 2 127.1 >nui
echo 2
ping -n 2 127.1 >nui
echo 1
pause
作者: Taurus    时间: 2009-7-2 22:28

巡环倒顺
@echo off &set num=10
:loop
cls & echo %num%
if %num%==10 ( set A=- )
if %num%==0 ( set A=+ )
set /a num%A%=1
ping /n 2 127.1>nul
goto :loop

[ 本帖最后由 Taurus 于 2011-2-6 01:17 编辑 ]
作者: liaobiaoxing    时间: 2009-7-3 21:10

  1. @echo off
  2. set a=10
  3. :loop
  4. echo %a%
  5. set /a a-=1
  6. if %a%==0 goto end
  7. ping -n 2 127.0.0.1 >nul
  8. goto loop
  9. :end
  10. pause>nul
复制代码

作者: yinsigan    时间: 2009-7-6 21:08

@echo off
for %%i in (10 9 8 7 6 5 4 3 2 1)  do echo %%i
pause & exit
作者: 风行者    时间: 2009-7-12 22:18

  1. @echo off & color 2f
  2. mode con cols=20 lines=2
  3. echo wscript.sleep 1000 >"%temp%\sleep.vbs"
  4. set /p=10秒后自动启动<NUL
  5. for /l %%i in (9 -1 0) do (
  6. "%temp%\sleep.vbs"
  7. set /p= <NUL
  8. set /p=%%i<NUL
  9. )
  10. msg %username% "启动完成!"
复制代码

作者: lsp19880301    时间: 2009-7-26 10:32

我写的可能比较白一点

echo off
set a=10 9 8 7 6 5 4 3 2 1
for %%i in (%a%) do echo %%i
pause>nul.
作者: benz1979    时间: 2009-7-26 15:14

@echo off
set a=11
:res
set /a a-=1
ping -n 2 127.0.0.1>nul>nul
cls
echo %a%
if %a% gtr 0 goto res
pause
作者: lee    时间: 2009-7-26 23:04

@echo off
for /l %%i in (10,-1,0) do (
echo %%i
ping -n 2 127.1>nul
)
pause

新手,初来乍到,请多指教!
作者: dazheng    时间: 2009-7-29 17:37     标题: 新手练习

@echo off & mode con cols=31 lines=15
title 倒计时

@echo.&@echo.&@echo.
@echo 倒计时开始:
setlocal enabledelayedexpansion
set num=10
:begin
if not !num! equ 0 for /f %%a in ("%num%")do (@echo %%a & ping /n 2 127.1>nul & set /a num-=1 & goto begin) else (pause>nul)
作者: jiayaoqin    时间: 2009-8-6 11:57

@echo off
for %%a in (10,9,8,7,6,5,4,3,2,1) do echo %%a
pause>nul
作者: nopr    时间: 2009-8-6 12:51

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (-9 1 -1) do (
  4.      set /a a=-1*%%i
  5.      echo !a!
  6.      ping /n 3 127.1 >nul &cls)
  7. pause>nul
复制代码

作者: nopr    时间: 2009-8-6 13:17

原帖由 inittab 于 2009-4-22 09:24 发表
不用ping .用%time% 比较精确@echo off
set /a t=10,t1=0
:begin
set t0=%t1%
set tt=%time%
set t1=%tt:~6,2%
if %t1% neq %t0% (set/p=%t%  


  亲自测试了,只是不明白为什么重复一次刚好一秒呢??
作者: wxcute    时间: 2009-8-6 13:41     标题: 回复 62楼 的帖子

if %t1% neq %t0%
关键是这句,根据测试秒位是否变化来判断是否走时一秒。
作者: nopr    时间: 2009-8-6 13:48

惨了,我的cmd帮助信息全变E文了,有没有办法改回来啊?

谢谢楼主的解释

[ 本帖最后由 nopr 于 2009-8-6 13:49 编辑 ]
作者: keen    时间: 2009-8-6 14:41     标题: 回复 64楼 的帖子

请参看:
http://www.bathome.net/thread-5419-1-3.html
作者: canyuexiaolang    时间: 2009-8-8 15:49

set t=10
for /l %%i in (%t% -1 0) do echo 倒计时%%i&ping -n 2 127.1 >nul&cls
作者: hs4814    时间: 2009-8-9 19:28

  1. @echo off
  2. for /l %%i in (10,-1,1) do (echo  倒计时: %%i &ping /n 3 127.0.0.1 >nul
  3. )
  4. pause>nul
复制代码

[ 本帖最后由 hs4814 于 2009-8-9 20:00 编辑 ]
作者: wayaoqiang    时间: 2009-8-12 17:22

  1. @echo off
  2. set m=10
  3. :a
  4. echo %m%
  5. set /a m-=1
  6. ping -n 2 127.1>nul
  7. if %m%==0 echo 时间到&&pause>nul&exit
  8. cls
  9. goto a
复制代码

[ 本帖最后由 wayaoqiang 于 2009-8-17 21:02 编辑 ]
作者: Hysteria    时间: 2009-8-15 05:07

@echo off
set /p=<nul
for /l %%a in (10,-1,1) do echo %%a
pause>nul

怎么没特效的感觉阿!
郁闷!不会用set /p=<nul
作者: couth    时间: 2009-8-19 12:42

看看这个代码:
@echo off
for /l %%i in (10,-1,0) do (
::下面一句是起到了延迟时间的作用,什么也不输出。
for /l %%j in (10000,-1,0) do echo %%j>nul
echo %%i
)
pause

作者: qq506657335    时间: 2009-8-19 15:11

@echo off
for /l %%i in (10 -1 0) do echo %%i
pause>nul
作者: qq506657335    时间: 2009-8-19 15:18

不知道这个符合要求不
@echo off
echo 10
ping /n 1 \\. >nul
cls
echo 9
ping /n 1 \\. >nul
cls
echo 8
ping /n 1 \\. >nul
cls
echo 7
ping /n 1 \\. >nul
cls
echo 6
ping /n 1 \\. >nul
cls
echo 5
ping /n 1 \\. >nul
cls
echo 4
ping /n 1 \\. >nul
cls
echo 3
ping /n 1 \\. >nul
cls
echo 2
ping /n 1 \\. >nul
cls
echo 1
ping /n 1 \\. >nul
cls
echo 0
ping /n 1 \\. >nul
cls
echo 没了
pause>nul
作者: DXSX    时间: 2009-8-25 19:48

方法1: 利用 PING
@echo off
set /a m=10
:loop
echo %m%
ping -n 2 127.0.0.1 >nul
set /a m=%m%-1
if %m%  EQU 0 goto end
goto loop
:end

方法2: 利用 循环判断 %TIME% 变量的秒数部分变化 但是要求 电脑要购快,至少应该在1秒内循环一次。
值得注意的是,SET /A 不能把 09,08,07 之类的数值正常赋值,必须把0去掉,因为系统会把09,08 之类的认为是文本变量。

@echo off
ECHO 10
set /a m=9
IF "%time:~6,1%"=="0"  (set /a t0=%time:~7,1% ) ELSE (set /a t0=%time:~6,2%)
:loop
IF "%time:~6,1%"=="0"  (set /a t=%time:~7,1% ) ELSE (set /a t=%time:~6,2%)
if %t% neq %t0% (set /a m=%m%-1 & set /a t0=%t% & echo %m%)
if %m% equ 0 goto end
goto loop
:end

[ 本帖最后由 DXSX 于 2009-8-26 11:14 编辑 ]
作者: yhd316    时间: 2009-9-14 18:32

@echo off
:agen
echo ----开心倒计时---------
for /l %%a in (10,-1,0) do @ping -n 2 127.1>nul&cls&echo %%a
echo 傻瓜你被耍啦 & @ping -n 3 127.1>nul&cls
goto agen
想问楼主如果我想让他只循环出现3次该怎么做
作者: mm546863903    时间: 2009-9-24 16:50

@echo off
for /l %%a in (1,1,10) do (
for /l %%i in (1,1,1000) do echo.>nul
echo %%a
)
pause>nul

这样也可以,呵呵
作者: drefong    时间: 2009-10-3 11:49

@echo off
:again
for /l %%i in (10,-1,1)  do ( ping -n 2 127.1 >nul 2>nul&echo %%i
)
goto again
pause
作者: zcydez    时间: 2009-10-18 16:41

@echo off
set a=10
set b=%a%
:a
if %a% neq 0 (goto b) else exit
:b
cls
echo %a%
ping -n 2 127.0.1>nul
set /a a=%b%-1
set b=%a%
goto a
作者: kiss3735707    时间: 2009-10-19 16:59     标题: 怎样用批处理完成登陆交换机?

用批处理完成登陆某交换机
IP192.168.1.2
UID admin
pwd admin


telnet 192.168.1.2
admin
admin
作者: pumahxh    时间: 2009-10-24 15:00

a
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=10
  4. for /l %%i in (1,1,10) do (
  5.     set a=11   
  6.     set /a a-=%%i
  7.     echo !a!
  8. )
  9. pause
复制代码

作者: ghostwar    时间: 2009-10-25 06:40

  1. @echo off
  2. set "war=198989"
  3. set/p "aaa=请输入密码"
  4. if  "%aaa%" equ " war" echo (登陆成功!)else (登陆失败!)
  5. pause
复制代码

作者: pumahxh    时间: 2009-11-10 18:05     标题: 10秒倒计时

  1. @echo off&cls
  2. for /l %%i in (10,-1,1) do (
  3.     echo 倒计10秒:%%i
  4.     ping -n 2 127.1>nul
  5.     cls )
  6. pause>nul
复制代码

看了下,早已有人用此法了。
作者: zgq0301    时间: 2009-11-11 14:05

第一种最笨的方法:
@echo off
for  %%i in (10,9,8,7,6,5,4,3,2,1,0) do (
       echo %%i
)
pause
作者: qingyuedufeng    时间: 2009-11-11 23:25

  1. @echo off
  2. for /l %%a in (10,-1,1) do (
  3.   echo %%a
  4.   ping -n 2 127.1 >nul
  5.   cls
  6. )
  7. pause>nul
复制代码
或者:
  1. @echo off
  2. set "a=10"
  3. :Start
  4. echo %a%
  5. ping -n 2 127.1>nul & cls
  6. set/a a-=1
  7. if %a% gtr 0 goto Start
  8. pause>nul
复制代码

作者: zgq0301    时间: 2009-11-12 09:43

@echo off
set var=10
:loop
echo %var%
set /a var-=1
ping -n 2 127.1>nul
if %var% neq 0 goto loop
pause>nul
作者: bamboo    时间: 2009-11-20 14:55

  1. @echo off
  2. for /l %%a in (10 -1 1) do (
  3. echo %%a && ping 127.1 -n 2 >nul
  4. )
  5. echo    按任意键退出!
  6. pause>nul
复制代码
我先用ping 1 -n 1 -w 1000 >nul来计时,发现倒计时显示完的用时超过10s,而用ping 127.1 -n 2 >nul在10s左右,想来用这样的倒计时应该都会比10s多一些用时吧。
作者: ljjllj    时间: 2009-11-26 15:26

用IF+GOTO写的````
  1. @echo off
  2. set a=10
  3. echo %a%
  4. :first
  5. if %a% gtr 0 goto home else goto end
  6. :home
  7. set /a a=%a%-1
  8. echo %a%
  9. if %a% gtr 0 goto first else goto end
  10. :end
  11. pause
复制代码

[ 本帖最后由 ljjllj 于 2009-11-26 15:29 编辑 ]
作者: feidian1028    时间: 2009-11-26 16:23

@ echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do set /a var=11-%%i&echo !var!
pause
作者: gbw911    时间: 2009-11-29 12:51

@echo off
for /l %%i in (10 -1 1) do echo %%i
pause>nul
作者: taomin0926    时间: 2009-11-29 16:35     标题: 回复 1楼 的帖子

@echo off
echo 10
ping -n 1 127.0.0.1>nul
cls
echo 9
ping -n 1 127.1>nul
cls
.......
这样下去也可以的啊
作者: caruko    时间: 2009-12-2 09:20

msg %username% /w /v 点击OK计时开始
for /l %%i in (10,-1,1) do (
msg %username% /time:1 /v %%i
)

这么有趣的用法,应该没人发过吧..

[ 本帖最后由 caruko 于 2009-12-2 10:32 编辑 ]
作者: caruko    时间: 2009-12-2 14:54

除了MSG超时,其实也可以用choice超时,不过只是基本精确吧..
@echo off
for /l %%i in (10,-1,1) do choice /d y /T 1 >nul&echo %%i

不过计时过程中,按任意键都会暂停计时1秒...
作者: x576380361    时间: 2009-12-3 14:04

要求:从 10 数到 0;
   方法不限;
   不需要精确地按秒来显示,显示成 10 行也没关系。

1
  1. @echo off
  2. for /l %%i in (10 -1 0) do (
  3. echo %%i
  4. ping /n 2 127.0.0.1>nul
  5. )
  6. pause>nul
复制代码
2
  1. @echo off
  2. set a= 10 9 8 7 6 5 4 3 2 1
  3. for %%i in (%a%) do (
  4. set /p=%%i <nul
  5. ping /n 2 127.0.0.1>nul
  6. )
  7. pause>nul
复制代码

作者: wsjxwj    时间: 2009-12-11 14:14

for /l %%a in (10,-1,1) do echo %%a
作者: wsjxwj    时间: 2009-12-11 14:21

按秒显示

@echo off
for /l %%a in (10,-1,1) do (ping -n 3 127.0.0.1>nul&echo %%a)
作者: Fyk    时间: 2009-12-12 19:54

@echo off
for /l %%i in (10,-1,0) do echo %%i&ping -n 2 127.1>nul
作者: cryfordog    时间: 2009-12-13 01:52

  1. @echo off
  2. for /l %%i in (10,-1,0) do (
  3. set /p=%%i<NUL
  4. ping /n 2 127.1>nul
  5. set /p=<NUL
  6. set /p= <NUL
  7. set /p=<NUL
  8. )
  9. pause
复制代码

作者: lvyaojian    时间: 2009-12-13 12:02

  1. @echo off
  2. cls
  3. for /l %%i in (10,-1,0) do (
  4. echo %%i
  5. ping /n 1 /w 1000 99.99>nul
  6. cls
  7. )
  8. pause
复制代码

作者: Kenmick    时间: 2010-1-20 16:02     标题: 新手来交作业额~~~

  1. @echo off
  2. for /l %%i in (10 -1 0) do (
  3. echo %%i
  4. ping 127.0.0.1 >nul
  5. )
复制代码
运行之后就是觉得倒数的有点慢 - -b
作者: a590687    时间: 2010-1-20 21:38     标题: 用循环来延时

  1. @echo off&setlocal enabledelayedexpansion
  2. set a=11
  3. for /l %%i in (1 1 10) do (
  4. set /a a-=1
  5. echo !a!
  6. for /l %%j in (1 1 15) do (
  7. ping -n 0 172.1>nul
  8. )
  9. )
  10. pause
复制代码

作者: a590687    时间: 2010-1-20 21:42

发完才看到98楼的 -1不错. 呵呵,我 想都没想就写这么麻烦




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2