Eu tenho um script em lote que gera números aleatórios de 1 a 10.000.
Meu script em lote
@echo off
cls
SET /A RAND=%RANDOM%%%10000+1
echo %RAND%
echo.
pause
Saídas Atuais
2532 (4 digits)
253 (3 digits)
25 (2 digits)
2 (1 digits)
Resultados esperados
2432 (4 digits)
3431 (4 digits)
9282 (4 digits)
8812 (4 digits)
Pergunta
Preciso que o número aleatório tenha apenas 4 dígitos e não 1, 2 ou 3 dígitos e sempre 4.
Responder1
Gerar script de lote do Windows com número aleatório de 4 dígitos
Você pode usar um script em lote comjanelaspara concluir esta tarefa facilmente, como explicarei abaixo.
Essencialmente, isso será. . .
- UsarPowerShell Obter aleatóriofunção para gerar o número aleatório
- O valor do número aleatório estará em um intervalo de
0000-9999
uso dos parâmetros-Maximum
e-Minimum
Use o"0" Especificador personalizado—"{0:0000} -f $fRandom" comPowerShelle .LÍQUIDOpara garantir que o valor do número aleatório tenha zeros à esquerda adicionados, garantindo que sempre tenha 4 dígitos
Resultado noPowerShellvalor de número aleatório sendo
echo
'd como saídaUse umPARA /Floop para obter o resultado do executadoPowerShellroteiro (o número aleatório) dentro dele e salve esse resultado como uma variável para usar no script em lote de acordo com suas necessidades (
%RAND%
)
Script em lote
Se o número aleatório não puder ter valores de 4 dígitos com zeros prefixados como 0001
, 0011
, ou 0111
você pode alterar o-Minimum 1000
assim, mas dígitos aleatórios 1-999
serão omitidos, então o valor de1000
é o que você deseja usar para o -Minimum
parâmetro, se for o caso.
@ECHO ON
SET PSScript=%Temp%\~tmpRandom4Digit.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO $fRandom = Get-Random -Maximum 9999 -Minimum 0000>>"%PSScript%"
ECHO $Random = "{0:0000}" -f $fRandom>>"%PSScript%"
ECHO ECHO $Random>>"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
FOR /F "DELIMS=" %%A IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"') DO SET "RAND=%%A"
echo %RAND%
EXIT
Recursos adicionais
Responder2
Uma solução simples poderia ser pegar o último dígito de quatro números gerados aleatoriamente
set "RAND=%random:~-1%%random:~-1%%random:~-1%%random:~-1%"
Responder3
Você poderia usar meu script em lote:
@echo off
if "%1" == "/?" (
echo Usage:
echo.
echo random [min] [max]
echo random /?
echo.
echo Can be used to generate a random number between [min] - [max] and displays the output in the RDM variable.
echo./? can be used to display help
echo.
echo Examples:
echo.
echo random 1 5 - Generates a random number between 1 - 5
echo random /? - Displays help
)
if not "%1" == "/?" set /a rdm=(%random%*%2/32768)+%1
Em seguida, arraste a pasta C:\Windows\System32 e digite "random /?" para a sintaxe.
Responder4
Você só precisa ajustar o valor mínimo e o intervalo da sua solução inicial.
@echo off
cls
SET /A RAND=%RANDOM%%%9000+1000
echo %RAND%
echo.
pause