【问题标题】:Simple batch script random number generator简单的批处理脚本随机数生成器
【发布时间】:2017-02-18 14:44:43
【问题描述】:

我是在批处理脚本中使用 %random% 命令的新手,我正在尝试创建一个批处理脚本来随机创建一个介于 0 和 3 之间的数字。我写了以下内容,但是对于每个实例(每次我双击BAT 文件)我得到相同的数字“1”。这违背了目的。这是基于所选视频文件上的此数字副本,因此它是随机的。

echo off 
set numb=" "
set /a numb=%random% / 10000 
echo %numb% :only used for testing 
pause :only used for testing

if %numb% LEQ 1 goto trailer
if %numb% EQU 2 goto dragon
if %numb% EQU 3 goto live

:dragon
echo Dragon
copy /Y "F:\Skyrim SSE\mod backup - files\Dragon flyby - BGS_Logo.bik" "D:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\Video\BGS_Logo.bik"
exit

:trailer
echo Trailer
copy /Y "F:\Skyrim SSE\mod backup - files\Official Trailer-BGS_Logo.bik" "D:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\Video\BGS_Logo.bik" 
exit

:live
Echo Live
copy /Y "F:\Skyrim SSE\mod backup - files\Dragonborne-live-BGS_Logo.bik" "D:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\Video\BGS_Logo.bik" 
exit

我想让它尽可能简单,因为它真的不需要很复杂。请帮忙

【问题讨论】:

  • 格式化 - 只需选择您的代码文本并按{}。您可以通过在当前batch-file random标签下按edit来编辑您的问题
  • 我会邀请您编辑您的问题,因为您的“答案”中的代码(我曾经替换您的原始代码 - 您应该删除您的“答案”,因为它将被删除为“不是一个答案“)嗯 - 没有真正的意义。请注意,标签必须单独位于一行 - 您不能像在汇编程序中那样添加指令...
  • 你想出了如何发布或者你想出了解决问题的方法?
  • set /a numb=%random%%% 3. 这将创建一个从 0 到 2 的数字(3 个数字)。另外我看到的问题是因为我除以 10000(当我不完全理解 %random% 函数时我在网上发现的)它实际上是在创建一个 10k 到 20k 范围内的随机数(19999)所以当它被除以得到的数字总是'1'。同样,将来如果我在这里复制并粘贴代码,我会一次做一行(也许这会有所作为)。

标签: batch-file random


【解决方案1】:

这是一种方法的示例:

@Echo Off

Set "_s=F:\Skyrim SSE\mod backup - files"
Set "_d=D:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\Video\BGS_Logo.bik"

Set/A "_r=%RANDOM%%%3"
>Nul Choice /C 012 /N /T 0 /D %_r%
If ErrorLevel 3 GoTo Dragon
If ErrorLevel 2 GoTo Trailer
If ErrorLevel 1 GoTo Live
GoTo :EOF

:Dragon
Echo(Dragon
Copy /Y "%_s%\Dragon flyby - BGS_Logo.bik" "%_d%"
GoTo EndIt

:Trailer
Echo(Trailer
Copy /Y "%_s%\Official Trailer-BGS_Logo.bik" "%_d%"
GoTo EndIt

:Live
Echo(Live
Copy /Y "%_s%\Dragonborne-live-BGS_Logo.bik" "%_d%"

:EndIt
GoTo :EOF

我没有真正的理由使用CHOICE我只是更喜欢它而不是一系列带有比较运算符的IFEQU, NEQ, LSS, LEQ, GTR, GEQ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2011-10-20
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多