Board logo

标题: 如何取值 [打印本页]

作者: Nickey     时间: 2007-9-30 01:56    标题: 如何取值

echo 第%times%次猜%UserInput%>>Temp.txt

Temp.txt 内容

第1次猜30
第2次猜40
第3次猜50
第4次猜60


当times=4时
请问如何取上一次(即第3次的值 50)呢?
find /n 返回    [3]第3次50
但如何去定义这个值呢?
想了很久 的确很菜
作者: lxmxn     时间: 2007-9-30 04:16
不知所云
作者: scriptor     时间: 2007-9-30 17:05


  Quote:
Originally posted by Nickey at 2007-9-30 01:56:
echo 第%times%次猜%UserInput%>>Temp.txt

Temp.txt 内容

第1次猜30
第2次猜40
第3次猜50
第4次猜60


当times=4时
请问如何取上一次(即第3次的值 50)呢 ...


for /f "delims=[] tokens=1,2* skip=2" %%a in ('find /n temp.txt') do (
   set x=%a
   if "!x!" equ "!times!" &&set /a output=x-1 &goto :eof
)

echo 上一次的值为  %output%.
不知道符不符合你的要求!
没有测试,有问题跟帖!
作者: Nickey     时间: 2007-9-30 19:48
没有 就为这个
想了一整晚想不出来
思路就是每次都将上一次的结果记录下来
这样当下一次提示的时候就会提示上一次与本次之间的取值范围
这个确实是很无聊
但旨在学习批处理

×××××××××××××××××××××××××××××××××××××××××××××××
@echo off
mode con: cols=50 lines=15
title 猜数字小游戏---by joppY
color 0a
setlocal enabledelayedexpansion
del Temp.txt

REM 初始界面
:begin
        cls
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        猜 数 字 小 游 戏         │
        echo     │                                  │
        echo     │             By joppY             │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.

        REM 产生随机数,并控制在0~100之间
        set /a PUZZLE=%random%%%100
        REM 初始化变量
        set UserInput=""
        set /a TIMES=0

REM 游戏例程
:game        
        set /p UserInput=请输入0~100之间的一个数字:
        set /a TIMES+=1
        REM 简单检测用户输入是否合法
        echo %UserInput% | findstr "[0-9]" || goto error
        echo %UserInput% | findstr /I "[a-z]" && goto error
        if %UserInput% GTR 100 goto overflow
        if %UserInput% LSS 0 goto underflow
        REM echo %PUZZLE%

        echo 第%TIMES%次猜%UserInput%>>Temp.txt
        for /f  %%i in (Temp.txt) do set To=%%i

        REM 判断用户输入
        if %UserInput% GTR %PUZZLE% goto toobig
        if %UserInput% LSS %PUZZLE% goto toosmall
        if %UserInput% EQU %PUZZLE% goto bingo
     
        :toobig
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太大了!          │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo              数字介乎 %To% ~ %UserInput% 之间
        echo.
        goto game

        :toosmall
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太小了!          │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo             数字介乎 %UserInput% ~ %To% 之间
        echo.
        goto game

        :bingo
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶〕Bingo! 你猜中了!      │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color 0a
        echo.
        set /p UserChoice=退出请按q,继续请按其他键...
        if /I %UserChoice%==q  del Temp.txt goto end
        goto begin

REM 处理异常
:error
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   拜托,请输入数字!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:overflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   你给的数>100了!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:underflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(     你给的数<0了!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

REM 退出
:end
        cls
        echo.
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        欢迎下次来玩,Bye Bye~     │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        del Temp.txt
        ping -n 2 127.1>nul
        exit
×××××××××××××××××××××××××××××××××××××××××××××××
作者: slore     时间: 2007-9-30 20:00
将上一次的值保存到一个变量里(不用读文本)……
作者: Nickey     时间: 2007-9-30 20:21
真的不懂耶
不懂就问 总有一天我都会变成大鸟
作者: slore     时间: 2007-9-30 20:49
@echo off
:Loop
Set /p UserInput=请输入0~100之间的一个数字:
Echo 上次输入是%LastNumber%,本次输入为%UserInput%
Set /a TIMES+=1
Set LastNumber=%UserInput%
Goto Loop