求批处理高手过来帮忙写个批处理,谢谢!

求批处理高手过来帮忙写个批处理,谢谢!做为80后,常常为了这顿饭要做什么菜而发愁。所以我想做个批处理自助选择菜单《随机菜》,所以盗用了体育彩票生成器要做个修改请高手来帮忙... 求批处理高手过来帮忙写个批处理,谢谢!

做为80后,常常为了这顿饭要做什么菜而发愁。所以我想做个批处理自助选择菜单《随机菜》,所以盗用了体育彩票生成器 要做个修改请高手来帮忙 如下

@echo off&color 5f&mode con cols=50 lines=8
title 自助炒菜生成器
if not "%~1"=="" goto loop
set /a a=100,
setlocal EnableDelayedExpansion
set /p b=请输入您要做几道菜(默认回车为3):&cls
:loop
if not "%~1"=="" (
for /l %%a in (1 1 %a%) do call echo %%random%% %%a
goto :eof
) else (
for /f "tokens=2" %%i in ('"%~0" n^|sort /r') do (
set /a b-=1
if !b! geq 0 set str=!str! %%i
)
)
echo\&echo 选择出的号码为: %str%
pause>nul

加入我的菜单有100道菜,可以自己选择要做几道菜。问题是如何才能够在批处理上面显示出菜的名字而不是100选几的数字? 谢谢!!!
展开
 我来答
天一弦剑lover
2009-11-18 · TA获得超过232个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:124万
展开全部
@echo off&color 5f&mode con cols=50 lines=8
:begin
cls
set /p dishnum=请输入您要做几道菜(默认回车3):
rem #####设置默认菜数#####
if not defined dishnum set dishnum=3
rem ########菜单##########
set dish=凉拌黄瓜,红烧茄,番茄炒鸡蛋,瓜丝儿,山鸡丁儿,拌海蜇,龙须菜,炝冬笋,玉兰片,浇鸳鸯,烧鱼头,烧槟子,烧百合,炸豆腐,炸面筋,糖熘儿,糖焖莲子,杏仁酪,小炒螃蟹,海鲫鱼,黄花鱼,扒海参,扒燕窝,扒鸡腿儿,扒鸡块儿
cls
set rsh=
set i=0
:loop
set /a numof=%random%%%25+1
for /f "tokens=%numof% delims=," %%i in ("%dish%") do set rsh=%rsh% %%i
set /a i+=1
if %i% lss %dishnum% goto loop
echo 以下便是为您随机抽取你要做的%dishnum%道菜:
echo %rsh%
rem
set /p select=请选择操作(Y,继续选菜;N,退出):
if /i %select%==Y goto begin else (
call exit
)
rem 这是我写的,你可以参考一下,不过用随机数可能出现重复的菜,体彩生成器肯定是有重复的号码的!

我又改进了一下,这下绝对不会选到重复的菜了,
代码如下:
@echo off
title 自助炒菜生成器
:begin
color 5f
cls
set dish=,凉拌黄瓜,红烧茄,番茄炒鸡蛋,瓜丝儿,山鸡丁儿,拌海蜇,龙须菜,炝冬笋,玉兰片,浇鸳鸯,烧鱼头,烧槟子,烧百合,

炸豆腐,炸面筋,糖熘儿,糖焖莲子,杏仁酪,小炒螃蟹,海鲫鱼,黄花鱼,扒海参,扒燕窝,扒鸡腿儿,扒鸡块儿,
set dishnum=
set select=
set /p dishnum=请输入您要做几道菜(默认回车3,最大25):
rem #####设置默认菜数#####
if not defined dishnum set dishnum=3
cls
set rsh=
set i=0
set r=25
echo 正在为您选菜,请稍后...
:loop
set /a numof=%random%%%%r%+1
for /f "tokens=%numof% delims=," %%i in ("%dish%") do set rsh=%rsh% %%i &&set judge=%%i
timeout/t 0 >nul
call set dish=%%dish:,%judge%,=,%%
set /a r-=1
set /a i+=1
echo 为您随机选择的第%i%道菜为:%judge%
if %i% lss %dishnum% (if %r% gtr 0 (goto loop) else (goto error)) else (goto result)
rem 结果输出
:result
echo 选菜结束,按任意键显示清单...&pause>nul
color 0b
cls
echo 以下便是为您随机抽取你要做的%dishnum%道菜:
echo.
set/p a=<nul
set/p=%rsh%<nul
echo.&echo.
set /p select=请选择操作(Y,重新选菜;其他任意键退出):
if /i "%select%"=="Y" goto begin else(
call exit
)
rem 出错处理
:error
color 0c
cls
echo 菜不够你选呀,兄弟!
echo 按任意键重新选择吧!&pause>nul
goto begin
百度网友c4249ef
2009-11-17 · TA获得超过4866个赞
知道大有可为答主
回答量:1855
采纳率:0%
帮助的人:3191万
展开全部
又写了个不会生成重复随机数的

@echo off
color 5f
title 自助炒菜生成器
set /a a=100
setlocal EnableDelayedExpansion
set /p b=请输入您要做几道菜:
for /l %%i in (1 1 %b%) do (
call :GetNum
call :!var!
)
pause>nul
:GetNum
set var=%random:~-2%
if not defined %var% (
set "%var%=A"
goto :eof)
call :GetNum
:01
echo 01
goto :eof
:02
echo 02
goto :eof
:03
echo 03
goto :eof
————————————————————————
终于看懂了,怪不得这么慢,调用自己多次,sort多次
————————————————————
你给的这个看不太懂,重写了个,后面的标签自己往上添吧,就是01,02那些,有问题hi我

@echo off
color 5f
title 自助炒菜生成器
setlocal EnableDelayedExpansion
set /p b=请输入您要做几道菜:
for /l %%i in (1 1 %b%) do (
call :!random:~-2!
)
pause
exit
:01
echo 01
goto :eof
:02
echo 02
goto :eof
:03
echo 03
goto :eof
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
956021617
2009-11-17
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
123
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式