批处理之家's Archiver

wxcute 发表于 2008-11-10 18:47

[ 新手习题 4 ] 批处理循环十秒倒计时

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

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

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

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

[[i] 本帖最后由 wxcute 于 2008-11-17 11:34 编辑 [/i]]

pusofalse 发表于 2008-11-10 19:53

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

综合性题目,适合新手练功。。。

BBCC 发表于 2008-11-10 20:42

[color=white][code]@for /l %%a in (10,-1,0) do (echo %%a)[/code]

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

[[i] 本帖最后由 BBCC 于 2008-11-10 21:04 编辑 [/i]]

hlzj88 发表于 2008-11-10 22:34

[code]@echo off
for /l %%i in (10,-1,1) do echo %%i
pause
[/code]刚看到,来练习一下

[[i] 本帖最后由 hlzj88 于 2008-11-10 22:36 编辑 [/i]]

nomyself 发表于 2008-11-11 19:44

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

sylovanas 发表于 2008-11-11 20:21

[code]@IF NOT DEFINED DEBUG @ECHO OFF
SET A=

:LOOP
SET /A A+=1
ECHO %A%
PING -w 2 -n 2 127.0.0.1 >NUL 2>&1
IF %A% EQU 10 GOTO END
GOTO LOOP
:END
ECHO E.O.F.[/code]

akiraakito 发表于 2008-11-14 20:49

[code]@echo off
for /l %%a in (10,-1,1) do (
    echo %%a
)
pause>nul[/code]

sd6733531 发表于 2008-11-16 08:12

[code]
@echo off
echo --------倒计时-------------
for /l %%i in (10,-1,0) do (echo %%i)
echo ---------------------------
pause>nul
[/code]

[[i] 本帖最后由 sd6733531 于 2008-11-16 08:14 编辑 [/i]]

stalker 发表于 2008-11-18 19:43

[code]@echo off
for /l %%i in (10 -1 0) do echo %%i
pause>nul[/code]

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

[code]@echo off
for %%i in (10 9 8 7 6 5 4 3 2 1) do (
echo %%i
for /l %%i in (1 1 10) do (ping 1>nul)
cls
)
pause>nul[/code]

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

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

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

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

zhouyongjun 发表于 2008-12-24 16:02

[code]@echo off&setlocal enabledelayedexpansion
color 1f&mode con cols=20 lines=12
echo.
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 # ^
6 -4 , 6 -1 4 -1 , 6 -4 , 12 -1 , 6 -4 # ^
6 -4 , 6 -1 4 -1 , 6 -4 , 6 -1 4 -1 , 6 -4 # ^
6 -4 , 12 -1 , 12 -1 , 12 -1 , 12 -1 # ^
6 -4 , 6 -1 , 6 -4 , 6 -1 4 -1 , 6 -4 # ^
6 -4 , 6 -1 , 6 -4 , 12 -1 , 6 -4 # ^
6 -1 2 -1 , 6 -1 2 -1 , 6 -4 , 10 -1 , 10 -1 # ^
6 -4 , 12 -1 , 6 -4 , 12 -1 , 6 -4 # ^
6 -4 , 12 -1 , 6 -4 , 6 -1 , 6 -4 # ^
9 -1 , 9 -1 , 9 -1 , 9 -1 , 9 -1 # ^
6 -4 , 6 -1 4 -1 , 6 -1 4 -1 , 6 -1 4 -1 , 6 -4 #
for %%i in (%num%) do (
set a=%%i&set b=!a:-=!
if "%%i"=="," echo.
if "%%i"=="#" ping/n 2 127.1 >nul&cls&echo.
if %%i lss 0 (for /l %%a in (1,1,!b!) do set/p=▓<nul) else (
for /l %%b in (1,1,!b!) do set/p= <nul
))[/code]

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]
修改了一下,希望能把被删除的分补过来...

[[i] 本帖最后由 xiong8707 于 2008-12-29 22:13 编辑 [/i]]

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

[code]@echo off
set /p=倒计时 10 秒<nul
ping -n 2 127.1>nul

set /p= 9 <nul
ping -n 2 127.1>nul

for /l %%a in (8 -1 1) do (
  set /p=%%a<nul
  ping -n 2 127.1>nul
)[/code]

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

[code]
@echo off
color 0a
for /l %%a in (10 -1 1) do (
echo %%a
for /l %%a in (1 1 1000) do ver>nul
)
pause>nul
[/code]

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

[code]@for /l %%a in (1,1,10) do echo %%b & ping -n 2 127.1>nul>nul & cls
pause[/code]

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
)

页: [1] 2 3 4 5 6 7

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.