[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 mxxcgzxxx 于 2011-7-15 16:16 编辑

每天一小练来个新思路
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=0
  4. for %%1 in (一 二 三 四 五 六 日) do (set 周%%1=!a!  )&(set /a a+=1)
  5. set /a b=%random%%%7
  6. set 周|findstr "%b%"
  7. pause>nul
  8. %0 2>nul
复制代码
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

1# wxcute
  1. @echo off
  2. Set /a a=%Random%%%6
  3. If %a%==0 (Echo 星期日) Else (Echo 星期%a%)
  4. pause
复制代码

TOP

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

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

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

TOP

  1. @echo off
  2. :xx
  3. set/a "a=%random%%%7 +1"
  4. if %a% equ 7 (echo 星期日) else echo 星期%a%
  5. pause&goto xx
复制代码

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
我尝试着写了下,
运行一下还是可以的。
大家看看中不中。
  1. @echo off
  2. set "day=日一二三四五六"
  3. set /a nu=%random% %% 7
  4. call echo 星期%%day:~%nu%,1%%
  5. pause>nul
复制代码

TOP

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

TOP

回复 15# lhjoanna


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

TOP

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

在这里试了半天的延迟变量应用~ 终于试出来了~
  1. @echo off & setlocal enabledelayedexpansion
  2. set rcd=日一二三四五六
  3. set var=
  4. set /a var=%random%%%7
  5. echo 周!rcd:~%var%,1!
  6. pause>nul
复制代码

TOP

  1. @echo off
  2. :begin
  3. set day=%random%
  4. set day=%random:~0,1%
  5. if %day%==1 echo 周一
  6. if %day%==2 echo 周二
  7. if %day%==3 echo 周三
  8. if %day%==4 echo 周四
  9. if %day%==5 echo 周五
  10. if %day%==6 echo 周六
  11. if %day%==7 echo 周日
  12. if %day%==8 goto begin
  13. if %day%==9 goto begin
  14. if %day%==0 goto begin
  15. pause>nul
复制代码

TOP

  1. ::批处理随机显示星期几
  2. @echo off&chcp 936>nul
  3. set "weeks=星期一 星期二 星期三 星期四 星期五 星期六 星期日"
  4. set /a week_of=%random% %% 7 + 1
  5. for /f "tokens=%week_of%" %%i in ("%weeks%") do echo %%i
  6. pause
  7. %0
复制代码

TOP

  1. @echo off
  2. set "str=12345670"
  3. set /a num=%random%%%7+1
  4. call echo week%%str:~%num%,1%%
  5. pause
复制代码
不知道怎么cmd显示不了汉子,就这样写了

TOP

  1. @echo off
  2. :redo
  3. set a=%random%
  4. if %a% leq 1 goto redo
  5. if %a% gtr 8 goto redo
  6. echo 星期%a%
  7. pause>nul
复制代码

TOP

  1. @echo off
  2. set "code=一 二 三 四 五 六 日"
  3. set /a "n=%random%%%7+1"
  4. for /f "tokens=%n%" %%i in ("%code%") do (echo.周%%i)
  5. ping 127.1 -n 3 1>nul
  6. %0
复制代码

TOP

本帖最后由 battab 于 2013-12-9 16:46 编辑
  1. @echo off
  2. :f
  3. set /a a=%random%%%7
  4. set str=日一二三四五六
  5. call echo 星期%%str:~%a%,1%%
  6. set /p q=继续(C):
  7. echo %q%
  8. if "%q%"=="c" goto f
  9. pause
复制代码
  1. @echo off
  2. :f
  3. set q=
  4. set /a a=%random%%%7
  5. set str=日一二三四五六
  6. call echo 星期%%str:~%a%,1%%
  7. set /p q=继续(C):
  8. if "%q%"=="c" goto f
  9. pause
复制代码
练手的时候发现:第一段代码按C继续时,第二次直接按回车会默认输入C而进入循环。
                        本意是想输入C可以继续,其它键一律退出的。
                        为达到目的,于是有了第二段代码。
                        我想这是一个声明变量的好例子吧。
                        写出来分享!
学习中

TOP

返回列表