Tengo un script por lotes que genera números aleatorios del 1 al 10000.
Mi secuencia de comandos por lotes
@echo off
cls
SET /A RAND=%RANDOM%%%10000+1
echo %RAND%
echo.
pause
Salidas actuales
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)
Pregunta
Necesito que el número aleatorio esté formado por solo 4 dígitos y no 1, 2 o 3 dígitos y siempre 4.
Respuesta1
Generar secuencia de comandos por lotes de Windows con números aleatorios de 4 dígitos
Puede utilizar un script por lotes conventanaspara completar esta tarea fácilmente como lo explicaré a continuación.
Esencialmente esta será la voluntad. . .
- UsarPowerShell Obtener aleatoriofunción para generar el número aleatorio
- El valor del número aleatorio estará en un rango de
0000-9999
uso de los parámetros-Maximum
y-Minimum
Utilizar el"0" Especificador personalizado—"{0:0000} -f $fRandom" conPotencia Shelly .NETOpara garantizar que el valor del número aleatorio tenga ceros a la izquierda, asegurándose de que siempre tenga 4 dígitos
Resultado en elPotencia Shellvalor de número aleatorio que se utiliza
echo
como salidaUsar unaPARA /Fbucle para tomar el resultado de lo ejecutadoPotencia Shellguion (el número aleatorio) dentro de él, y guarde ese resultado como una variable para usar en el script por lotes según sus necesidades (
%RAND%
)
Guión por lotes
Si el número aleatorio no puede ser valores de 4 dígitos con ceros precedidos como 0001
, 0011
o 0111
puede cambiar el-Minimum 1000
así en su lugar, pero 1-999
se omitirán dígitos aleatorios para que el valor de1000
es lo que desea usar para el -Minimum
parámetro si ese es el 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 adicionales
Respuesta2
Una solución sencilla podría ser tomar el último dígito de cuatro números generados aleatoriamente.
set "RAND=%random:~-1%%random:~-1%%random:~-1%%random:~-1%"
Respuesta3
Podrías usar mi script por lotes:
@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
Luego arrastre la carpeta C:\Windows\System32 y escriba "random /?" para la sintaxis.
Respuesta4
Sólo necesita ajustar el valor mínimo y el rango en su solución inicial.
@echo off
cls
SET /A RAND=%RANDOM%%%9000+1000
echo %RAND%
echo.
pause