返回列表 发帖
本帖最后由 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>nulCOPY
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

1# wxcute
@echo off
Set /a a=%Random%%%6
If %a%==0 (Echo 星期日) Else (Echo 星期%a%)
pauseCOPY

TOP

77# mxxcgzxxx
算法很妙,不过
set a=0
for %%1 in (一 二 三 四 五 六 日) do (set%%1=!a!  )&(set /a a+=1)COPY
这句说明 周一对应的是 0
依此类推,周日对应的就是 6 。

%Random%%%7算出来应该是 0-7 ,8个数
所以按你的算法 %Random%%%6即可。

本来是来找茬的,没想到也给自己找出问题来了,  是什么我还不明白,呵呵。

TOP

@echo off
:xx
set/a "a=%random%%%7 +1"
if %a% equ 7 (echo 星期日) else echo 星期%a%
pause&goto xxCOPY

TOP

本帖最后由 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
1

评分人数

世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

回复 1# wxcute
我尝试着写了下,
运行一下还是可以的。
大家看看中不中。
@echo off
set "day=日一二三四五六"
set /a nu=%random% %% 7
call echo 星期%%day:~%nu%,1%%
pause>nulCOPY

TOP

请问下这段:%random%%%7+1是神马意思?我知道%random%是代表随即变量,但是不知道%%7+1是什么意思?

TOP

回复 15# lhjoanna


    为什么要用call?起到了什么作用

TOP

本帖最后由 Enterpaise 于 2013-1-16 16:14 编辑

在这里试了半天的延迟变量应用~ 终于试出来了~
@echo off & setlocal enabledelayedexpansion
set rcd=日一二三四五六
set var=
set /a var=%random%%%7
echo!rcd:~%var%,1!
pause>nulCOPY

TOP

@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>nulCOPY

TOP

::批处理随机显示星期几
@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
%0COPY

TOP

@echo off
set "str=12345670"
set /a num=%random%%%7+1
call echo week%%str:~%num%,1%%
pauseCOPY
不知道怎么cmd显示不了汉子,就这样写了

TOP

@echo off
:redo
set a=%random%
if %a% leq 1 goto redo
if %a% gtr 8 goto redo
echo 星期%a%
pause>nulCOPY

TOP

@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
%0COPY

TOP

本帖最后由 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
pauseCOPY
@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
pauseCOPY
练手的时候发现:第一段代码按C继续时,第二次直接按回车会默认输入C而进入循环。
                        本意是想输入C可以继续,其它键一律退出的。
                        为达到目的,于是有了第二段代码。
                        我想这是一个声明变量的好例子吧。
                        写出来分享!
学习中

TOP

返回列表