返回列表 发帖
本帖最后由 dosbat 于 2011-4-20 21:53 编辑

呵呵 代码如下 希望高手点评下 看有哪里写的不合适的地方
菜鸟一个 呵呵 代码如下:
@echo off&color 0a
set max=200,min=100
for /l %%i in (1,1,100) do (
                ::call调用的时候不要忘记:
call :rand %%i %max% %min%
)
pause&goto exit
::  :rand函数的定义
:rand
set /a ran=%random%%%(%2-%3+1)+%3
echo%1个随机数:%ran%
goto :eof
:exit
exitCOPY
附带我对call的一些粗浅的理解:
call :标号  【参数列表】 注意我代码中的%1代表:rand这个函数的第一个参数,也就是for循环里面的%%i
其他依次类推 特别注意的是%0代表:rand本身而不是第一个参数 呵呵 刚开始我也犯了这个错误:用%0来引用第一个参数
例外我觉得call的使用有点类似于汇编中的call

TOP

好,学习啦     积累的少啊
haohaoxuexi

TOP

@echo off
::setlocal enabledelayedexpansion
:1
set a=%random%
if %a% lss 100 goto :1
if %a% gtr 200 goto :1
echo %a%
pause>nulCOPY
菜鸟一个,潜心学习
总有学会的一天

TOP

高手如云啊

TOP

这个不错,挺简的!
享受批处理的神奇!!!

TOP

本帖最后由 welllib 于 2011-6-24 09:05 编辑
@echo off
:start
if %random% lss 10 (echo. 10%random%) else (echo. 1%random:~-2%)
ping -n 2 127.1 >nul
goto startCOPY
以下为主要代码解释,方便第一次接触BAT的:
(1) if %random% lss 10 (echo. 10%random%) else (echo. 1%random:~-2%)
    如果随机a数小于10,显示10a,否则显示1(随机数后两位)
    例如:随机数为2,显示102;随机数为13234,显示134
(2) ping -n 2 127.1 >nul
延时器,ping 127.1两次
两次ping之间时间间隔为1s

TOP

改成如下@echo off
:eo
cls
echo 1%random:~-1%%random:~-1%
pause
goto :eo
wxcute 发表于 2008-10-1 19:32

这个方法不错,哈哈,我怎么就没想到呢

TOP

@echo off
set/a str=%random%%%200
if %str% geq 100 echo %str%
pause>nulCOPY
[color=BLUE]一切只为了批处理&DOS[/color]

TOP

利用批处理不能处理小数的性质写一个:
@echo off
@set /a num=%random%/325+100
@echo %num%
@pause >nulCOPY

TOP

本帖最后由 qc5111 于 2011-9-8 01:13 编辑
@echo off
set /a a=%random%%%100+100
echo %a%
pauseCOPY
1

评分人数

    • cjiabing: 注意代码超过一行要用[code]括起来PB -1

TOP

哦,知道了

TOP

set /a test=%random%%%100+100

TOP

200以内的随机数
@echo off
set/a num=%random%%%200
echo %num%
pauseCOPY

TOP

@echo off
:1
set p=%random%
if  %p%lss100 goto 1
if  %p% lss 200 (
    echo %p%
    ) else (
    goto 1
)
pauseCOPY

TOP

@echo off
:a
set/a w=%random%%%200
if not %w% lss 100 (echo %w%) else goto a
pauseCOPY

TOP

返回列表