[ 新手练习 5 ] 批处理随机显示星期几
一周有七天周一 周二 周三 周四 周五 周六 周日
利用随机数随机显示一天,开始可以用阿拉伯数字,但最终显示时要用汉字 ^_^
答对题均加分,以第一个分高。
参考:[ 一日一教学 ] 随机数的应用
[url=http://bbs.bathome.net/thread-2563-1-1.html]http://bbs.bathome.net/thread-2563-1-1.html[/url]
[quote]
上一题:[ 新手习题 4 ] 循环十秒倒计时
[url=http://bbs.bathome.net/thread-2494-1-1.html]http://bbs.bathome.net/thread-2494-1-1.html[/url]
下一题:[ 新手习题 6 ] 添加汉字行号
[url=http://bbs.bathome.net/thread-2569-1-1.html]http://bbs.bathome.net/thread-2569-1-1.html[/url]
[/quote]
[color=Red]所发代码若不止一行,请用code标签把代码部分括起来。[/color]
Q: 如何用code把代码扩起来?
A: [url]http://bbs.bathome.net/thread-404-1-1.html[/url] [code]@echo off
set /a day=%random% %% 7
if %day%==0 echo 星期日
if %day%==1 echo 星期一
if %day%==2 echo 星期二
if %day%==3 echo 星期三
if %day%==4 echo 星期四
if %day%==5 echo 星期五
if %day%==6 echo 星期六
pause>nul[/code]应该是最好懂的代码了...
回复 2楼 的帖子
确实是最好懂的,但也是最。。。。。 [code]@echo offset "code=周一 周二 周三 周四 周五 周六 周日"
:main
set /a strRan=%random%%%7+1
for /f "tokens=%strRan% delims=, " %%a in ("%code%") do (echo %%a)
pause>nul
goto :main[/code] 一开始被LZ的中文空格搞晕了... [b]回 5 楼:[/b]习惯用全角空格来对齐 ^_^
大家试试不用 for 确实,不用for显得更直接,新手都来试试。。 [code]::按一下变一个
@echo off
set /a n=%random% %% 7+1
if %n%==1 echo 今天周一
if %n%==2 echo 今天周二
if %n%==3 echo 今天周三
if %n%==4 echo 今天周四
if %n%==5 echo 今天周五
if %n%==6 echo 今天周六,休息,看望家人
if %n%==7 echo 今天周日,明天上班,抓紧休息
pause>nul
%0[/code]更喜欢BBCC的代码,差一大截啊
[[i] 本帖最后由 hlzj88 于 2008-11-16 22:28 编辑 [/i]]
回复 8楼 的帖子
你这个和2楼的有区别吗?给大家个提示,充分利用变量的截取。 [code]@echo off
set var=周一周二周三周四周五周六周日
set /a n=%random% %% 7+1
if %n% lss 2 echo %var:~0,2%
if %n%==2 echo %var:~2,2%
if %n%==3 echo %var:~4,2%
if %n%==4 echo %var:~6,2%
if %n%==5 echo %var:~8,2%
if %n%==6 echo %var:~-4,2%
if %n% gtr 6 echo %var:~-2,2%
pause>nul
%0[/code]想高一点,高不了啊,算是对上面8楼的修改吧
[[i] 本帖最后由 hlzj88 于 2008-11-16 23:38 编辑 [/i]] 多谢 随风 兄帮忙照看帖子。
大家不用拼命想,偶尔想到了再来回答也行。 [code]@echo off
set /a n=%random% %% 7
if %n%==0 echo 今天是星期一
if %n%==1 echo 今天是星期二
if %n%==2 echo 今天是星期三
if %n%==3 echo 今天是星期四
if %n%==4 echo 今天是星期五
if %n%==5 echo 今天是星期六
if %n%==6 echo 今天是星期天
ping -n 2 127.1>nul>nul
%0[/code] [code]@echo off&setlocal enabledelayedexpansion
:main
set "code=周一周二周三周四周五周六周日"&set /a strRan=%random%%%12+1&set /a strRan2=!strRan!%%2
if "!strRan2!" equ "0" (set strPrint=!code:~-%strRan%,2!&echo. !strPrint!&pause&goto :main ) else (goto :main)[/code]貌似不显示周一?
回复 13楼 的帖子
%random%%%12+1用
%random%%%14
就好了。
一周可是有 7 天阿,12 / 2 怎么也只有 6 天阿!
还可再简化。 呵,wxcute兄指的是这个吧?[code]@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul[/code] 其实是我想得太复杂。。。
方法跟15L的一样。。。 [quote]原帖由 [i]lhjoanna[/i] 于 2008-11-17 14:23 发表 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=15460&ptid=2564][img]http://www.bathome.net/images/common/back.gif[/img][/url]
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul [/quote]
不明白这里的call具体的意义,延时吗,用ping又出不了效果,请教说明或相关知识点 [quote]原帖由 [i]hlzj88[/i] 于 2008-11-18 05:17 发表 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=15497&ptid=2564][img]http://www.bathome.net/images/common/back.gif[/img][/url]
不明白这里的call具体的意义,延时吗,用ping又出不了效果,请教说明或相关知识点 [/quote]
貌似搜索一下变量延迟应该有结果。 [code]
@echo off
setlocal enabledelayedexpansion
set "str=日一二三四五六"
set /a pp=%random%%%7
echo 星期!str:~%pp%,1!
pause>nul[/code] [code]@echo off
set a=一二三四五六日
set /a num=%random%%%7
set /p =星期<nul
call set /p =%%a:~%num%,1%%<nul
pause>nul[/code] [code]@echo off
set /a i=%random% %% 7+1
if %i%==1 echo 星期一
if %i%==2 echo 星期二
if %i%==3 echo 星期三
if %i%==4 echo 星期四
if %i%==5 echo 星期五
if %i%==6 echo 星期六
if %i%==7 echo 星期日
ping 127.1 -n 1 >nul
pause>nul[/code] [code]@echo off
:main
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期: %%str:~%num%,1%%
ping -n 2 127.1>nul 2>nul
goto :main[/code]不好意思,纯粹是修改以上兄弟的(惭愧,正在学习中..)。只是为了让它自动化点。哈哈 [quote]原帖由 [i]lhjoanna[/i] 于 2008-11-17 14:23 发表 [url=http://bathome.net/redirect.php?goto=findpost&pid=15460&ptid=2564][img]http://bathome.net/images/common/back.gif[/img][/url]
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul [/quote]
看了高手的答案,只能默默地努力了
这句帮我分析下呀我都不知道:
set /a num=%random%%%7 这句请从各个角度帮我分析下 不知楼上说的各个角度是什么角度,你把set /?看完,这句话就全部可以明白。看完后哪里不懂,再有重点的提问。 [code]@echo offset /a n=0
call :111 一 二 三 四 五 六 日
pause&goto :eof
:111
set /a m=%random%%%7+1
call echo 星期%%%m%
set /a n+=1
if %n% leq 10 goto 111 else goto :eof[/code] 水平有限,只有使用蠢办法,不过可以重复使用[code]@echo off
set /a day=%random% %%7+1
echo %day%
if %day%==1 echo 星期一
if %day%==2 echo 星期二
if %day%==3 echo 星期三
if %day%==4 echo 星期四
if %day%==5 echo 星期五
if %day%==6 echo 星期六
if %day%==7 echo 星期日
pause>nul
%0[/code] [code]@echo off
:loop
set /a a=%random%%%7
if %a%==0 set day=日
if %a%==1 set day=一
if %a%==2 set day=二
if %a%==3 set day=三
if %a%==4 set day=四
if %a%==5 set day=五
if %a%==6 set day=六
echo 星期%day%
pause>nul
goto loop[/code] [code]
@echo off
set /a var=%random%%%7+1
set str="一二三四五六日”
:loop
if "%var%"=="%n%" (call echo 星期%%str:~%n%,1%%) else (set /a n+=1&goto loop)
pause
[/code] [code]@echo off
setlocal enabledelayedexpansion
:1
set /a p=!random!%%6+1
echo 星期%p%
pause
goto 1[/code]