标题: [ 新手练习 5 ] 批处理随机显示星期几 [打印本页]
作者: wxcute 时间: 2008-11-16 20:14 标题: [ 新手练习 5 ] 批处理随机显示星期几
一周有七天
周一 周二 周三 周四 周五 周六 周日
利用随机数随机显示一天,开始可以用阿拉伯数字,但最终显示时要用汉字 ^_^
答对题均加分,以第一个分高。
参考:[ 一日一教学 ] 随机数的应用
http://bbs.bathome.net/thread-2563-1-1.html
所发代码若不止一行,请用code标签把代码部分括起来。
Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: akiraakito 时间: 2008-11-16 21:27
- @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
复制代码
应该是最好懂的代码了...
作者: 随风 时间: 2008-11-16 21:32 标题: 回复 2楼 的帖子
确实是最好懂的,但也是最。。。。。
作者: BBCC 时间: 2008-11-16 21:32
- @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
复制代码
作者: BBCC 时间: 2008-11-16 21:33
一开始被LZ的中文空格搞晕了...
作者: wxcute 时间: 2008-11-16 21:41
回 5 楼:习惯用全角空格来对齐 ^_^
大家试试不用 for
作者: 随风 时间: 2008-11-16 22:06
确实,不用for显得更直接,新手都来试试。。
作者: hlzj88 时间: 2008-11-16 22:14
- ::按一下变一个
- @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
复制代码
更喜欢BBCC的代码,差一大截啊
[ 本帖最后由 hlzj88 于 2008-11-16 22:28 编辑 ]
作者: 随风 时间: 2008-11-16 22:40 标题: 回复 8楼 的帖子
你这个和2楼的有区别吗?
给大家个提示,充分利用变量的截取。
作者: hlzj88 时间: 2008-11-16 23:26
- @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
复制代码
想高一点,高不了啊,算是对上面8楼的修改吧
[ 本帖最后由 hlzj88 于 2008-11-16 23:38 编辑 ]
作者: wxcute 时间: 2008-11-17 08:55
多谢 随风 兄帮忙照看帖子。
大家不用拼命想,偶尔想到了再来回答也行。
作者: nomyself 时间: 2008-11-17 09:21
- @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
复制代码
作者: BBCC 时间: 2008-11-17 13:23
- @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)
复制代码
貌似不显示周一?
作者: wxcute 时间: 2008-11-17 13:39 标题: 回复 13楼 的帖子
%random%%%12+1
用
%random%%%14
就好了。
一周可是有 7 天阿,12 / 2 怎么也只有 6 天阿!
还可再简化。
作者: lhjoanna 时间: 2008-11-17 14:23
呵,wxcute兄指的是这个吧?- @echo off
- set "str=一二三四五六日"
- set /a num=%random%%%7
- call echo 星期%%str:~%num%,1%%
- pause>nul
复制代码
作者: BBCC 时间: 2008-11-17 19:36
其实是我想得太复杂。。。
方法跟15L的一样。。。
作者: hlzj88 时间: 2008-11-18 05:17
原帖由 lhjoanna 于 2008-11-17 14:23 发表
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul
不明白这里的call具体的意义,延时吗,用ping又出不了效果,请教说明或相关知识点
作者: BBCC 时间: 2008-11-18 13:03
原帖由 hlzj88 于 2008-11-18 05:17 发表
不明白这里的call具体的意义,延时吗,用ping又出不了效果,请教说明或相关知识点
貌似搜索一下变量延迟应该有结果。
作者: 辉少 时间: 2008-11-21 16:46
- @echo off
- setlocal enabledelayedexpansion
- set "str=日一二三四五六"
- set /a pp=%random%%%7
- echo 星期!str:~%pp%,1!
- pause>nul
复制代码
作者: firewolf85 时间: 2008-12-8 11:00
- @echo off
- set a=一二三四五六日
- set /a num=%random%%%7
- set /p =星期<nul
- call set /p =%%a:~%num%,1%%<nul
- pause>nul
复制代码
作者: steven007 时间: 2008-12-19 15:14
- @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
复制代码
作者: RiceFans 时间: 2008-12-19 22:44
- @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
复制代码
不好意思,纯粹是修改以上兄弟的(惭愧,正在学习中..)。只是为了让它自动化点。哈哈
作者: leaparde 时间: 2008-12-26 13:59
原帖由 lhjoanna 于 2008-11-17 14:23 发表
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul
看了高手的答案,只能默默地努力了
作者: XBATI 时间: 2008-12-28 21:51 标题: 这句帮我分析下呀我都不知道:
set /a num=%random%%%7 这句请从各个角度帮我分析下
作者: lhjoanna 时间: 2008-12-28 22:48
不知楼上说的各个角度是什么角度,你把set /?看完,这句话就全部可以明白。看完后哪里不懂,再有重点的提问。
作者: skuny 时间: 2009-1-13 12:29
- @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
复制代码
作者: p05401144 时间: 2009-1-14 09:33
水平有限,只有使用蠢办法,不过可以重复使用- @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
复制代码
作者: hxinhu12315 时间: 2009-1-28 09:19
- @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
复制代码
作者: zcy85611 时间: 2009-2-3 12:28
- @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
复制代码
作者: kingerpk 时间: 2009-2-9 17:10
- @echo off
- setlocal enabledelayedexpansion
- :1
- set /a p=!random!%%6+1
- echo 星期%p%
- pause
- goto 1
复制代码
作者: aresk 时间: 2009-2-14 16:47
原帖由 lhjoanna 于 2008-11-17 14:23 发表
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul
学习了,谢谢。。。。。。。。。。。。。。。。
作者: irresolute 时间: 2009-2-14 22:10
- @echo off
- setlocal enabledelayedexpansion
- set /a bb=%random%%%7
- if %bb%==0 (echo 星期天) else (
- if %bb%==1 (echo 星期一) else (
- if %bb%==2 (echo 星期二) else (
- if %bb%==3 (echo 星期三) else (
- if %bb%==4 (echo 星期四) else (
- if %bb%==5 (echo 星期五) else (echo 星期六))))))
-
- pause>nul
复制代码
作者: keen 时间: 2009-3-28 10:23
自己琢磨的。
- @echo off
- set /a a=%random%%%7
- set "day=日一二三四五六"
- call, echo 周%%day:~%a%,1%%
- pause>nul
复制代码
作者: Lumiere 时间: 2009-3-28 13:13
- @echo off
- set /a weekday=%random%%%7
- set str=日一二三四五六
- setlocal enabledelayedexpansion
- echo 星期!str:~%weekday%,1!
- endlocal
- pause
复制代码
作者: cainiao736 时间: 2009-3-28 15:01
- @echo off
- set /a n=%random%%%7+1
- for /f "tokens=%n% delims= " %%i in ("日 一 二 三 四 五 六") do (echo 周%%i)
- pause
复制代码
作者: flyingsand 时间: 2009-3-28 15:11
- @echo off
- setlocal enabledelayedexpansion
- :start
- cls
- set m=0
- for %%i in (周一 周二 周三 周四 周五 周六 周日) do (
- set /a m+=1
- set !m!=%%i
- )
- set /a n=%random%%%7+1
- echo !%n%!
- pause
- goto start
复制代码
作者: 5810239q 时间: 2009-3-29 12:09
- @echo off
- set t="周一 周二 周三 周四 周五 周六 周日"
- set /a s=%random% %%7+1
- for /f "tokens=%s%" %%a in (%t%) do echo %%a
- pause
复制代码
[ 本帖最后由 5810239q 于 2009-3-29 12:12 编辑 ]
作者: energy2009 时间: 2009-4-9 20:45
- @echo off
- :m
- set a=%random%
- set b=%a:~0,1%
- if %b% gtr 7 goto m
- if %b% equ 7 echo 周日
- if %b% equ 1 echo 周一
- if %b% equ 2 echo 周二
- if %b% equ 3 echo 周三
- if %b% equ 4 echo 周四
- if %b% equ 5 echo 周五
- if %b% equ 6 echo 周六
- ping -n 2 127.1>nul
- exit
复制代码
作者: sjzong 时间: 2009-5-7 00:00
本想套用skuny兄的一段代码,谁知他已经早写好了!!- @echo off&setlocal enabledelayedexpansion
- call :11 一 二 三 四 五 六 日
- pause>nul&goto :eof
- :11
- set/a a=%random% %% 7 +1
- call echo 星期%%!a!
复制代码
作者: aoelus 时间: 2009-5-10 12:14
- @echo off && setlocal enabledelayedexpansion
- set /a num=%random:~-1,1%
- set "str=天一二三四五六"
- if %num% gtr 6 (echo 今天是星期天) else call echo 今天是星期%%str:~!num!,1%%
- pause >nul
复制代码
只能根据随机数的最后一位进行判断。。
星期天会比较多。。
还是喜欢星期天啊 ^_^
[ 本帖最后由 aoelus 于 2009-5-10 13:02 编辑 ]
作者: zgq0301 时间: 2009-11-12 10:16
- @echo off
- set dayset="周一,周二,周三,周四,周五,周六,周日"
- set /a day=%random% %%7+1
- for /f "delims=, tokens=%day%" %%i in (%dayset%) do (
- echo %%i
- )
- pause>nul
- %0
复制代码
作者: zgq0301 时间: 2009-11-12 10:35
- @echo off
- setlocal enabledelayedexpansion
- set dayset=一二三四五六日
- set /a day=%random% %%7
- echo 周!dayset:~%day%,1!
- pause>nul
- %0
复制代码
作者: Seter 时间: 2009-11-12 13:34
都被写完了...- @echo off
- set/as=%random%%%7
- set s=周%s:0=一%
- set s=%s:1=二%
- set s=%s:2=三%
- set s=%s:3=四%
- set s=%s:4=五%
- set s=%s:5=六%
- echo %s:6=日%
复制代码
作者: tession 时间: 2009-11-12 15:31
原帖由 lhjoanna 于 2008-11-17 14:23 发表
呵,wxcute兄指的是这个吧?@echo off
set "str=一二三四五六日"
set /a num=%random%%%7
call echo 星期%%str:~%num%,1%%
pause>nul
比如这里num等于2 会显示星期三,这应该不是想要的结果吧???
作者: Taurus 时间: 2009-11-15 14:28
..........................@echo off
set "day=日一二三四五六"
set /a nub=%random%%%7
call echo 星期%%day:~%nub%,1%%
pause>nul
...哎~思路和楼上重覆了,几乎一模一樣... ...
[ 本帖最后由 Taurus 于 2009-11-15 14:31 编辑 ]
作者: Seter 时间: 2009-11-16 20:45
原帖由 tession 于 2009-11-12 15:31 发表
比如这里num等于2 会显示星期三,这应该不是想要的结果吧???
没错啊...num是0~6,0对应一,6对应日
作者: netbenton 时间: 2009-11-17 07:45
还有这种方法:
- @echo off&setlocal enabledelayedexpansion
- for %%a in (一 二 三 四 五 六 日) do set/a n+=1&set x!n!=%%a
- :lp
- set/a ran=1%time:~-2%%%7+1
- echo 星期!x%ran%!
- >nul ping -n 2 127.1
- goto :lp
复制代码
作者: pumahxh 时间: 2009-11-17 21:12
- @echo off
- set "str=周一 周二 周三 周四 周五 周六 周日"
- set/a n=%random%%%7+1
- for /f "tokens=%n%" %%i in ("%str%") do echo 随机显示:%%i
- pause>nul
复制代码
[ 本帖最后由 pumahxh 于 2009-11-18 08:50 编辑 ]
作者: pumahxh 时间: 2009-11-17 21:29
再发一个不用for,用set- @echo off
- set "str=一二三四五六日"
- set/a n=%random%%%7
- call,set m=%%str:~%n%,1%%
- echo 随机显示:周%m%
- pause>nul
复制代码
作者: bamboo 时间: 2009-11-20 14:35
- @echo off
- set week=周一 周二 周三 周四 周五 周六 周日
- ::echo %week%
- set /a rand=%random%%%7+1
- ::echo %rand%
- for /f "tokens=%rand%" %%a in ("%week%") do (echo %%a)
- echo 按任意键退出!
- pause>nul
复制代码
楼主的题目直接复制字符“周一 周二 周三..”,不能用delims的默认分割,让我的代码总得不出结果,我找了好久,最后是将字符直接的间隔删掉再重输空格,才解决问题。..
作者: x576380361 时间: 2009-12-6 20:42
- @echo off&setlocal enabledelayedexpansion
- :begin
- set a=一二三四五六日
- set /a b=%random%%%7
- echo 周!a:~%b%,1!
- pause&goto begin
复制代码
作者: gbw911 时间: 2009-12-7 14:05
- @echo off
- :star
- for %%i in (星期一 星期二 星期三 星期四 星期五 星期六 星期日) do echo %%i & pause>nul
- goto :star
复制代码
作者: lvyaojian 时间: 2009-12-13 22:11
- @echo off
- set a=周一 周二 周三 周四 周五 周六 周日
- set /a b=%random%%%7+1
- for /f "tokens=%b% delims= " %%i in ("%a%") do echo %%i
- pause
复制代码
作者: stonegold 时间: 2009-12-20 00:54 标题: 迷惑~
- @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
复制代码
这个是四楼的代码/
我不明白set /a strRan=%random%%%7+1 去余了为什么还要加1??
如果随即数是10,那strran的值是4,运行for命令后显示的是周四,实际上10是周三啊。
作者: Kenmick 时间: 2010-1-18 20:26 标题: 学习一下,本人新手,只会用最原始的 - -b 见笑了~~
- @echo off
- set /a a=%random% %% 7
- if "%a%"=="0" echo 周一
- if "%a%"=="1" echo 周二
- if "%a%"=="2" echo 周三
- if "%a%"=="3" echo 周四
- if "%a%"=="4" echo 周五
- if "%a%"=="5" echo 周六
- if "%a%"=="6" echo 周日
- pause >nul
- %0
复制代码
作者: wgoxm521 时间: 2010-1-27 09:23
以前见过,但是不会。现在能做了,嘿嘿…
作者: aiguozhe 时间: 2010-1-29 11:37
@echo off
set /a a=%random% %%7+1
echo 周%a%
pause>nul
%0
回答的第一个问题,完全自己做的,比较爽
作者: P_Ricky 时间: 2010-4-14 11:40
- @echo off
- setlocal enabledelayedexpansion
- set /a a=%random% %% 7+1
- set b=0
- for %%i in (周一 周二 周三 周四 周五 周六 周日) do (
- set /a b+=1
- if !b!==!a! echo %%i)
复制代码
作者: honeybat 时间: 2010-4-15 14:52
- @ECHO OFF
- setlocal enabledelayedexpansion
- SET a=星期一星期二星期三星期四星期五星期六星期日
- set /a m=(!random!%%7)*3
- echo !m!
- echo !a:~%m%,3!
- pause>nul
复制代码
作者: 634175535 时间: 2010-4-16 23:55
我不是高手,前几天才迷上p这个东西!
作者: 634175535 时间: 2010-4-24 14:43
@echo off
title=随机显示星期几
:0
set/a a=%random% %% 7 +1
if %a%==1 echo 星期一
if %a%==2 echo 星期二
if %a%==3 echo 星期三
if %a%==4 echo 星期四
if %a%==5 echo 星期五
if %a%==6 echo 星期六
if %a%==7 echo 星期日
pause>nul
goto 0
作者: mangci 时间: 2010-5-13 22:21
- @ echo off
- set /a week=%random%%%8
- if %week% neq 0 echo,今天是星期%week%
- pause
复制代码
作者: poxi 时间: 2010-7-18 19:48
答:
- @echo off
- set str=一二三四五六日
- set /a ran=%random%%%7
- call set day=%%str:~%ran%,1%%
- echo 周%day%
- pause
复制代码
效果:
[attach]2725[/attach]
================
这个应该很好懂吧.....没用for 因为不太会 = =!
end;
作者: rogue_1983 时间: 2010-8-2 15:37 标题: 看我的!
<1>@echo off
:top
set /a var=%random%%%7
if %var%==0 call :a
if %var%==1 call :b
if %var%==2 call :c
if %var%==3 call :d
if %var%==4 call :e
if %var%==5 call :f
if %var%==6 call :g
:a
echo 周一&pause&goto :top
:b
echo 周二&pause&goto :top
:c
echo 周三&pause&goto :top
:d
echo 周四&pause&goto :top
:e
echo 周五&pause&goto :top
:f
echo 周六&pause&goto :top
:g
echo 周天&pause&goto :top
pause
<2>@echo off
:top
set /a var=%random%%%7
if %var%==0 call echo 周一&pause&goto :top
if %var%==1 call echo 周二&pause&goto :top
if %var%==2 call echo 周三&pause&goto :top
if %var%==3 call echo 周四&pause&goto :top
if %var%==4 call echo 周五&pause&goto :top
if %var%==5 call echo 周六&pause&goto :top
if %var%==6 call echo 周天&pause&goto :top
[ 本帖最后由 rogue_1983 于 2010-8-2 15:48 编辑 ]
作者: zcydez 时间: 2010-8-4 18:14
@echo off
setlocal EnableDelayedExpansion
set a=一二三四五六日
set /a b=%random%%%7
set c=!a:~%b%,1!
echo %c%
pause
%0
作者: wangqi0077 时间: 2010-9-9 13:49
- @echo off
- set a=星期一
- set b=星期二
- set c=星期三
- set d=星期四
- set e=星期五
- set f=星期六
- set g=星期日
- set /a n=%random%%%7+1
- if %n% equ 1 (echo %a%) else (
- if %n% equ 2 (echo %b%) else (
- if %n% equ 3 (echo %c%) else (
- if %n% equ 4 (echo %d%) else (
- if %n% equ 5 (echo %e%) else (
- if %n% equ 6 (echo %f%) else (
- if %n% equ 7 (echo %g%) else exit ))))))
-
- pause >nul
复制代码
作者: wangqi0077 时间: 2010-9-9 13:53
原帖由 poxi 于 2010-7-18 19:48 发表
答:
@echo off
set str=一二三四五六日
set /a ran=%random%%%7
call set day=%%str:~%ran%,1%%
echo 周%day%
pause
效果:
2725
================
这个应该很好懂吧.....没用for 因为不太会 = =! ...
这位兄台写的用截取啊..高人..高.学习了.
作者: wangqi0077 时间: 2010-9-9 14:04
原帖由 XBATI 于 2008-12-28 21:51 发表
set /a num=%random%%%7 这句请从各个角度帮我分析下
这个%random%是批处理中.取随机数的意思.任意数除以7 余数都只会是 0-6 所以就可以用这来取7个数了..大该就是这样.
作者: vincentzhou 时间: 2010-12-31 23:33
- @echo off
- set /a a=%random%%%7+1
- for /f "tokens=%a%" %%b in ('more +4 "%~nx0"') do echo %%b
- pause>nul&exit
- 周一 周二 周三 周四 周五 周六 周日
复制代码
[ 本帖最后由 vincentzhou 于 2010-12-31 23:41 编辑 ]
作者: weichenxiehou 时间: 2011-1-4 16:37
@echo off
setlocal enabledelayedexpansion
set str=一二三四五六日
set /a num=%random%%%7
echo 周!str:~%num%,1!
pause
作者: we6540 时间: 2011-1-30 20:10
@echo off
setlocal enabledelayedexpansion
set a=一二三四五六日
set /a b=%random%%%7
set c=!a:~%b%,1!
echo 周%c%
pause
作者: common 时间: 2011-6-14 21:14
- @echo off
- setlocal enabledelayedexpansion
- :1
- set a=%random%
- set b=%a:~2,1%
- if !b! equ 0 echo 星期一
- if !b! equ 1 echo 星期二
- if !b! equ 2 echo 星期三
- if !b! equ 3 echo 星期四
- if !b! equ 4 echo 星期五
- if !b! equ 5 echo 星期六
- if !b! equ 6 echo 星期日
- if !b! gtr 6 goto :1
- pause
复制代码
看到好方法都有人用了,用个能实现,但很复杂的方法参与下
作者: chris521crystal 时间: 2011-6-20 21:09
- @echo off&setlocal enabledelayedexpansion
- set /a xq=%random%%%7+1
- set "xq_1=%xq:1=一%"
- set "xq_2=%xq:2=二%"
- set "xq_3=%xq:3=三%"
- set "xq_4=%xq:4=四%"
- set "xq_5=%xq:5=五%"
- set "xq_6=%xq:6=六%"
- set "xq_7=%xq:7=七%"
- for %%i in (%xq%) do echo 星期!xq_%%i!
- pause>nul
复制代码
有点复杂!!!
作者: welllib 时间: 2011-6-23 10:59
本帖最后由 welllib 于 2011-6-23 11:15 编辑
- @echo off
- color 1a
- echo.===========================
- echo.
- echo. Random Number TO Weekday
- echo.
- echo.===========================
- :start
- echo.======================
- set /a rdn=%random% %% 7+1
- echo.%rdn%
- set wkd=Monday Tuesday Wednesday Thursday Friday Saturday Sunday
- for /f "tokens=%rdn% delims= " %%i in ("%wkd%") do (echo %%i)
- echo.======================
- set /p ch=Exit? (Choose "Y" to exit, Others to Try Again)
- if /i %ch%==Y (goto end) else (goto start)
复制代码
作者: welllib 时间: 2011-6-23 11:30
刚才看到前面有高手用ping 法的时间延迟,学了来用用- @echo off
- color 1a
- echo.===========================
- echo.
- echo. Random Number TO Weekday
- echo.
- echo.===========================
- :start
- set /a rdn=%random% %% 7+1
- echo.%rdn%
- set wkd=Monday Tuesday Wednesday Thursday Friday Saturday Sunday
- for /f "tokens=%rdn% delims= " %%i in ("%wkd%") do (echo %%i)
- ping -n 2 127.0.0.1>nul
- goto start
复制代码
作者: mxxcgzxxx 时间: 2011-7-14 19:37
本帖最后由 mxxcgzxxx 于 2011-7-15 16:16 编辑
每天一小练来个新思路- @echo off
- setlocal enabledelayedexpansion
- set a=0
- for %%1 in (一 二 三 四 五 六 日) do (set 周%%1=!a! )&(set /a a+=1)
- set /a b=%random%%%7
- set 周|findstr "%b%"
- pause>nul
- %0 2>nul
复制代码
作者: Hello123World 时间: 2011-7-17 13:14
1# wxcute - @echo off
- Set /a a=%Random%%%6
- If %a%==0 (Echo 星期日) Else (Echo 星期%a%)
- pause
复制代码
作者: Hello123World 时间: 2011-7-17 13:37
77# mxxcgzxxx
算法很妙,不过- set a=0
- for %%1 in (一 二 三 四 五 六 日) do (set 周%%1=!a! )&(set /a a+=1)
复制代码
这句说明 周一对应的是 0
依此类推,周日对应的就是 6 。
%Random%%%7算出来应该是 0-7 ,8个数
所以按你的算法 %Random%%%6即可。
本来是来找茬的,没想到也给自己找出问题来了, 是什么我还不明白,呵呵。
作者: zxd11097 时间: 2011-7-24 07:53
- @echo off
- :xx
- set/a "a=%random%%%7 +1"
- if %a% equ 7 (echo 星期日) else echo 星期%a%
- pause&goto xx
复制代码
作者: mxxcgzxxx 时间: 2011-7-24 09:13
本帖最后由 mxxcgzxxx 于 2011-7-24 09:14 编辑
mxxcgzxxx
算法很妙,不过这句说明 周一对应的是 0
依此类推,周日对应的就是 6 。
%Random%% ...
Hello123World 发表于 2011-7-17 13:37
%%7是取余的意思,所以只能取到6,如果是7就整了所以是0
是退格符,就是会退一格,比如:
echo 3215 的结果显示:325
echo 3215 的结果显示:351
作者: scarcr 时间: 2011-8-4 10:28
回复 1# wxcute
我尝试着写了下,
运行一下还是可以的。
大家看看中不中。- @echo off
- set "day=日一二三四五六"
- set /a nu=%random% %% 7
- call echo 星期%%day:~%nu%,1%%
- pause>nul
复制代码
作者: birdsdeng 时间: 2011-9-15 01:00
请问下这段:%random%%%7+1是神马意思?我知道%random%是代表随即变量,但是不知道%%7+1是什么意思?
作者: bat爱好者 时间: 2013-1-13 21:09
回复 15# lhjoanna
为什么要用call?起到了什么作用
作者: Enterpaise 时间: 2013-1-16 16:12
本帖最后由 Enterpaise 于 2013-1-16 16:14 编辑
在这里试了半天的延迟变量应用~ 终于试出来了~- @echo off & setlocal enabledelayedexpansion
- set rcd=日一二三四五六
- set var=
- set /a var=%random%%%7
- echo 周!rcd:~%var%,1!
- pause>nul
复制代码
作者: Clarkky 时间: 2013-1-27 23:29
- @echo off
- :begin
- set day=%random%
- set day=%random:~0,1%
- 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 周日
- if %day%==8 goto begin
- if %day%==9 goto begin
- if %day%==0 goto begin
- pause>nul
复制代码
作者: skynjupt 时间: 2013-4-25 12:43
- ::批处理随机显示星期几
- @echo off&chcp 936>nul
-
- set "weeks=星期一 星期二 星期三 星期四 星期五 星期六 星期日"
- set /a week_of=%random% %% 7 + 1
- for /f "tokens=%week_of%" %%i in ("%weeks%") do echo %%i
- pause
- %0
复制代码
作者: Jay罗小尼 时间: 2013-8-5 15:45
- @echo off
- set "str=12345670"
- set /a num=%random%%%7+1
- call echo week%%str:~%num%,1%%
- pause
复制代码
不知道怎么cmd显示不了汉子,就这样写了
作者: wy9264 时间: 2013-10-8 19:42
- @echo off
- :redo
- set a=%random%
- if %a% leq 1 goto redo
- if %a% gtr 8 goto redo
- echo 星期%a%
- pause>nul
复制代码
作者: lifei259 时间: 2013-11-30 12:33
- @echo off
- set "code=一 二 三 四 五 六 日"
- set /a "n=%random%%%7+1"
- for /f "tokens=%n%" %%i in ("%code%") do (echo.周%%i)
- ping 127.1 -n 3 1>nul
- %0
复制代码
作者: battab 时间: 2013-12-9 16:45
本帖最后由 battab 于 2013-12-9 16:46 编辑
- @echo off
- :f
- set /a a=%random%%%7
- set str=日一二三四五六
- call echo 星期%%str:~%a%,1%%
- set /p q=继续(C):
- echo %q%
- if "%q%"=="c" goto f
- pause
复制代码
- @echo off
- :f
- set q=
- set /a a=%random%%%7
- set str=日一二三四五六
- call echo 星期%%str:~%a%,1%%
- set /p q=继续(C):
- if "%q%"=="c" goto f
- pause
复制代码
练手的时候发现:第一段代码按C继续时,第二次直接按回车会默认输入C而进入循环。
本意是想输入C可以继续,其它键一律退出的。
为达到目的,于是有了第二段代码。
我想这是一个声明变量的好例子吧。
写出来分享!
作者: 章伯魂 时间: 2014-3-14 13:15
@echo off
set /a t=%random% %% 7
if %t%==0 echo 周一
if %t%==1 echo 周二
if %t%==2 echo 周三
if %t%==3 echo 周四
if %t%==4 echo 周五
if %t%==5 echo 周六
if %t%==6 echo 周日
pause
作者: change.tsai 时间: 2014-4-18 19:49
- @echo off
-
- set "code=周一 周二 周三 周四 周五 周六 周日"
-
- :loop
- set /a rdm=%random%%%7+1
-
- for /f "tokens=%rdm% delims= " %%i in ("%code%") do (
- echo %%i
- )
-
- pause>nul
-
- goto :loop
复制代码
作者: change.tsai 时间: 2014-4-18 19:49
- @echo off
-
- set "code=周一 周二 周三 周四 周五 周六 周日"
-
- :loop
- set /a rdm=%random%%%7+1
-
- set /a rdm1=rdm*3
- call echo %%code:~%rdm1%,2%%
-
- pause>nul
-
- goto :loop
复制代码
作者: shelluserwlb 时间: 2014-11-9 16:35
- @echo off
- setlocal
- set a1=一 & set a2=二 & set a3=三
- set a4=四 & set a5=五 & set a6=六 & set a7=日
- set /a b=%random%%%7+1
- call echo 星期%%a%b%%%
- endlocal
- pause
复制代码
作者: 慕夜蓝化 时间: 2014-12-27 12:18
@echo off
set "week=周一 周二 周三 周四 周五 周六 周日"
call :w %week%
:w
for /f "delims=" %%i in ('set /a %random%%%8') do (
if %%i neq 0 call echo,%%%%i&pause>nul
)
goto :w
这个。也可以使用goto :label and :loop 来代替for循环。
作者: clsgalmc 时间: 2015-5-7 22:43
懂了点!!@!!
作者: 胖奇4BAT 时间: 2016-4-24 16:56
@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
作者: taofan712 时间: 2017-2-28 09:52
- @echo off
- :loop
- set /a day=%random%%%7+1
- for /f "tokens=%day% delims= " %%a in ("一 二 三 四 五 六 日") do echo; 星期%%a&pause>nul&goto loop
复制代码
作者: 13510184899 时间: 2018-5-15 16:04
::一周有七天
::周一 周二 周三 周四 周五 周六 周日
::利用随机数随机显示一天,开始可以用阿拉伯数字,但最终显示时要用汉字 ^_^
@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 星期七
pause>nul
%0
::按一下变一个
作者: tigerpower 时间: 2018-5-16 07:24
本帖最后由 tigerpower 于 2018-5-16 07:27 编辑
- powershell -c "$lc=[Globalization.CultureInfo]'zh-CN';(Get-Date).AddDays((random 7)).ToString('dddd',$lc)"
复制代码
试试将zh-CN替换为en-US或ja-JP
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |