|
|
大家都知道,如果用户在一个批处理在等待时(比如显示某组号码5秒时)输入东西,等下set /p时,就会出现刚才输入的东西
这等于给了“记数字”玩家作弊的机会,比如以下代码:- @echo off
- cls
- set a=%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%
- echo 给你3秒记住这组数字:%a%
- ping -n 4 127.1>nul
- cls
- set /p num=现在输入:
- echo.
- if "%a%"=="%num%" (echo 你输入对了) else (echo 你输入错了)
- pause>nul
- exit
复制代码 要作弊是易如反掌的,我在批处理显示“给你3秒……”时输入数字,等下set /p时就写出来了……
为此我就写了一个代码,不完美但起码实现无三方去掉用户在批处理等待时输入的东西- @echo off
- if "%1"=="apple" goto apple
- if "%1"=="apple2" goto apple2
- start /b "" %0 apple
- start /b "" %0 apple2
- echo 现在不能输入,需等待4秒……
- ping -n 5 127.1>nul
- echo abc>abc
- cls
- echo.
- echo 现在按两次enter,看到enter: 时就输入
- pause>nul
- erase /f /q abc>nul 2>nul
- erase /f /q abc2>nul 2>nul
- set /p a=Enter:
- echo.
- echo 你输入了%a%
- pause
- exit
- :apple
- set /p =
- if exist abc echo abc>abc2&exit
- goto apple
- :apple2
- set /p = <nul
- if exist abc2 exit
- goto apple2
复制代码 |
|