Como usar aleatório no script BATCH?
windows
random
windows-xp
batch-file
IAdapter
fonte
fonte
Respostas:
%RANDOM%
dá a você um número aleatório entre 0 e 32767.Usando uma expressão como
SET /A test=%RANDOM% * 100 / 32768 + 1
, você pode alterar o intervalo para qualquer coisa que desejar (aqui, o intervalo é [1… 100] em vez de [0… 32767]).fonte
SETLOCAL ENABLEDELAYEDEXPANSION
e usando ao!RANDOM!
invés de%RANDOM%
, como Eugene postou.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; apenas definaminval
emaxval
com os valores apropriados primeiro.Você pode controlar o intervalo do número com:
- produzirá um número entre 0 ~ 99.
Este:
- produzirá um número entre 1 ~ 100.
fonte
%random% %%100
não é uma sintaxe mágica, mas na verdade%random % %% 100
com um espaço a menos, onde o%%
é apenas um escapado%
que significa módulo.)Você provavelmente deseja obter vários números aleatórios e pode querer especificar um intervalo diferente para cada um, portanto, deve definir uma função. No meu exemplo, eu gero números de 25 a 30 com
call:rand 25 30
. E o resultado éRAND_NUM
após a saída dessa função.fonte
fonte
Você poderia fazer desta forma, o que não requer
EnableDelayedExpansion
onde
max
está seu máximo emin
é seu mínimo. Isso não é muito eficiente, pois pode levar muitas rodadas se seu alcance for muito pequeno. Além disso, isso não funcionará para números maiores que 32.767.fonte
Digamos que você queira um número de 1 a 5; você pode usar o seguinte:
Ou você pode usar: ~ 1,1 no lugar de: ~ -1,1. O: ~ -1,1 não é necessário, mas reduz bastante o tempo necessário para atingir o intervalo correto. Digamos que você queira um número de 1 a 50, precisamos decidir entre 2 dígitos e 1 dígito. Usar:
Você pode adicionar mais a este algoritmo para decidir entre grandes intervalos, como 1-1000.
fonte
goto
quando você pode ter um forro como acima? Outras soluções permitem que você especifique explicitamente o intervalo. Qual é a vantagem do seu código?exemplo "
fornecerá um número aleatório entre 100 e 50. Certifique-se de usar apenas um sinal de porcentagem como operando se não estiver usando a linha em um script de lote!
fonte
fonte
simplificado com várias instruções IF e bastante ((()))
fonte
E apenas para ser completamente aleatório para quem nem sempre quer uma tela preta.
Isso mudará a cor da tela e ambos são aleatórios.
fonte
Se você dividir por algum valor grande, obterá uma grande quantidade de duplicatas, uma após a outra. O que você precisa fazer é pegar o módulo do valor% RANDOM%:
fonte
aqui está um exemplo que criei para você, ele deve exibir uma caixa de diálogo pedindo para você selecionar um número de 1 a 10, dependendo do número que você selecionar, ele irá gerar um exemplo de número aleatório para um arquivo em lote que você nomeou. Se você selecionar "1", obterá um exemplo de número aleatório de 1 dígito. se você selecionar "10", obterá um exemplo de número aleatório de 10 dígitos.
fonte
agora apresentando todas as cores do arco-íris dos
fonte
E apenas para ser completamente aleatório, uma total falta de ordem:
SET /A V=%random% %%15 +1
fonte