如何在指定的范围内显示随机数字,比如我想随机显示的数字为(6,7,8,9,10,11,12,14,15,16,17)为其中的一个。用批处理怎么写,还请各位高人指点。谢谢!
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off
:l
set rn=%random:~0,1%
set rr=%random:~0,2%
if %rn% geq 6 (
if %rn% leq 9 (set n=1&echo %rn%&pause&exit /b)
)
if %rr% geq 10 (
if %rr% leq 17 (set m=1&echo %rr%&pause&exit/b)
)
if not defined m goto :l
)
pause
@echo off
set max=17
set min=6
set /a "a=%random%%%(%max%-%min%+1)+%min%"
echo %a%
pause
| 评分人 | 分数 | 时间 |
|---|---|---|
| everest79 | +15 | 2007-11-29 13:50 |
@echo off
setlocal EnableDelayedExpansion
set "str=6 7 8 9 10 11 12 14 15 16 17"
set min=m
set max=0
for %%n in (%str%) do (
if %%n lss !min! set min=%%n
if %%n gtr !max! set max=%%n
)
:loop
cls
set /a n=%random%%%(%max%-%min%+1)+%min%
for %%n in (%str%) do if %n% == %%n goto end
goto loop
:end
echo %n%
pause
goto loop
| 评分人 | 分数 | 时间 |
|---|---|---|
| khansky | +1 | 2007-11-29 15:26 |
@echo off
:l
set rn=%random:~0,1%
set rr=%random:~0,2%
if %rn% geq 6 (
if %rn% leq 9 (echo %rn%&pause&exit /b)
)
if %rr% geq 10 (
if %rr% neq 13 ( if %rr% leq 17 (set m=1&echo %rr%&pause&exit/b) )
)
if not defined m goto :l
)
pause
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do call set /a "n=%%n%%+1"
set /a "tn=(%random%)%%(%n%)+1"
call :GET %tn%
pause
goto :EOF
:GET
for /f "usebackq tokens=%1 delims== " %%i in ('%string%') do echo %%i
goto :EOF
Originally posted by dikex at 2007-11-29 01:29:
没看清楚,看到前面自然就以为是连续的,呵呵
写了另一个利用for的tokens参数的:
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in ...
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do set /a n+=1
set /a "n=%random%%%%n%+1"
for /f "usebackq tokens=%n% delims= " %%i in ('%string%') do echo %%i
pause
goto :EOF| 评分人 | 分数 | 时间 |
|---|---|---|
| khansky | +1 | 2007-11-29 15:25 |
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%a in (%string%) do call set _%%random%%=%%a
for /f "tokens=2 delims==" %%a in ('set _^|sort') do set var=%%a
echo %var%
pause
Originally posted by zh159 at 2007-11-29 02:46 AM:
简化:
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do set /a n+=1
set /a "n=%random%%%%n%+1"
for /f "usebackq tokens=%n% delim ...
Originally posted by khansky at 2007-11-29 15:22:
谢谢各位兄弟的帮忙。现在运行这些脚本有以下几点看法:1)。4楼的结果虽然是对的,但要一直循环。我的目的是随机给一个变量赋值为上面数值之 ...
Originally posted by dikex at 2007-11-29 12:45:
比较喜欢用call,这样看起来比较清楚,而且容易扩展;而%random%%%%n%这里加上两个括号也能让代码更清楚,一定程度上防止一些奇怪的错误发生:)
系统找不到文件 D
Cΐΐ。
for %%i in (%string%) do call set /a "n=%%n%%+1"
set /a "tn=(%random%)%%(%n%)+1"for %%i in (%string%) do set /a n+=1
set /a "tn=%random% %% %n%+1"@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do set /a n+=1
set /a "n=%random% %% %n%+1"
for /f "tokens=%n% delims= " %%i in ("%string%") do echo %%i
pause
exitOriginally posted by zh159 at 2007-11-29 04:06 PM:
不知道为什么,我执行后会出现:
将
for %%i in (%string%) do call set /a "n=%%n%%+1"
set /a "tn=(%random%)%%(%n%)+1"
改为
for %%i i ...