批处理之家's Archiver

wxcute 发表于 2008-11-16 20:14

[ 新手练习 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]

akiraakito 发表于 2008-11-16 21:27

[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]应该是最好懂的代码了...

随风 发表于 2008-11-16 21:32

回复 2楼 的帖子

确实是最好懂的,但也是最。。。。。

BBCC 发表于 2008-11-16 21:32

[code]@echo off
set "code=周一 周二 周三 周四 周五 周六 周日"
:main
set /a strRan=%random%%%7+1
for /f "tokens=%strRan% delims=, " %%a in ("%code%") do (echo %%a)
pause>nul
goto :main[/code]

BBCC 发表于 2008-11-16 21:33

一开始被LZ的中文空格搞晕了...

wxcute 发表于 2008-11-16 21:41

[b]回 5 楼:[/b]习惯用全角空格来对齐 ^_^

大家试试不用 for

随风 发表于 2008-11-16 22:06

确实,不用for显得更直接,新手都来试试。。

hlzj88 发表于 2008-11-16 22:14

[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]]

随风 发表于 2008-11-16 22:40

回复 8楼 的帖子

你这个和2楼的有区别吗?
给大家个提示,充分利用变量的截取。

hlzj88 发表于 2008-11-16 23:26

[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]]

wxcute 发表于 2008-11-17 08:55

多谢 随风 兄帮忙照看帖子。

大家不用拼命想,偶尔想到了再来回答也行。

nomyself 发表于 2008-11-17 09:21

[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]

BBCC 发表于 2008-11-17 13:23

[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]貌似不显示周一?

wxcute 发表于 2008-11-17 13:39

回复 13楼 的帖子

%random%%%12+1

%random%%%14
就好了。

一周可是有 7 天阿,12 / 2 怎么也只有 6 天阿!

还可再简化。

lhjoanna 发表于 2008-11-17 14:23

呵,wxcute兄指的是这个吧?[code]@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul[/code]

BBCC 发表于 2008-11-17 19:36

其实是我想得太复杂。。。
方法跟15L的一样。。。

hlzj88 发表于 2008-11-18 05:17

[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又出不了效果,请教说明或相关知识点

BBCC 发表于 2008-11-18 13:03

[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]

貌似搜索一下变量延迟应该有结果。

辉少 发表于 2008-11-21 16:46

[code]
@echo off
setlocal enabledelayedexpansion
set "str=日一二三四五六"
set /a pp=%random%%%7
echo  星期!str:~%pp%,1!
pause>nul[/code]

firewolf85 发表于 2008-12-8 11:00

[code]@echo off
set a=一二三四五六日
set /a num=%random%%%7
set /p =星期<nul
call set /p =%%a:~%num%,1%%<nul
pause>nul[/code]

steven007 发表于 2008-12-19 15:14

[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]

RiceFans 发表于 2008-12-19 22:44

[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]不好意思,纯粹是修改以上兄弟的(惭愧,正在学习中..)。只是为了让它自动化点。哈哈

leaparde 发表于 2008-12-26 13:59

[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]

看了高手的答案,只能默默地努力了

XBATI 发表于 2008-12-28 21:51

这句帮我分析下呀我都不知道:

set /a num=%random%%%7 这句请从各个角度帮我分析下

lhjoanna 发表于 2008-12-28 22:48

不知楼上说的各个角度是什么角度,你把set /?看完,这句话就全部可以明白。看完后哪里不懂,再有重点的提问。

skuny 发表于 2009-1-13 12:29

[code]@echo off
set /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]

p05401144 发表于 2009-1-14 09:33

水平有限,只有使用蠢办法,不过可以重复使用[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]

hxinhu12315 发表于 2009-1-28 09:19

[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]

zcy85611 发表于 2009-2-3 12:28

[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]

kingerpk 发表于 2009-2-9 17:10

[code]@echo off
setlocal enabledelayedexpansion
:1
set /a p=!random!%%6+1
echo 星期%p%
pause
goto 1[/code]

页: [1] 2 3 4

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.