batch-file-es Windows
Capítulo 2: Aleatorio en archivos por lotesExamplesNúmeros al azarUsando la variable dinámica %Random% , podemos obtener un entero aleatorio de 0 a 32767. Porejemplo:echo %random%Obviamente, esto devuelve un número entero de 0 a 32767. Pero a veces queremos que esté enun rango específico, digamos de 1 a 100.Generando números aleatorios dentro de rango específicoEl método básico para hacerlo se detalla a continuación.set /a result=(%RANDOM%*max/32768)+mindonde max es el número superior que se puede generar, y min es el número más pequeño que sepuede generar. Tenga en cuenta que no obtendrá ningún número decimal porque set /aredondea automáticamente. Para generar un número aleatorio decimal, intente esto:set /a whole=(%RANDOM%*max/32768)+minset /a decimal=(%RANDOM%*max/32768)+minecho %whole%.%decimal%Generando números aleatorios mayores que 32767Si intentasset /a whole=(%RANDOM%*65536/32768)+1lo más probable es que obtengas números aleatorios que son impares.Para generar números más grandes que 32767, aquí hay un método mejor.set /a result=%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%El código anterior extrae el carácter 1 de cada %random% . Pero esto se hace a propósito.Dado que el número random podría ser un número de un dígito, la extracción de los últimos 2https://riptutorial.com/es/home 5
dígitos no funcionará. Por eso solo extraemos el último carácter. En este caso, tenemos un 6%random:~-1% , que genera el máximo de 999999 y el mínimo de 000000 ; es posible que deba ajustaresto para que se ajuste a sus necesidades.Pseudoaleatoriocmd.exe genera la semilla en función del momento en que se inició la sección de cmd , por lo que siinicia la sección de mutliple casi al mismo tiempo, es posible que el resultado no sea losuficientemente aleatorio.Alfabetos al azarDesafortunadamente, los lotes no tienen un método incorporado para generar alfabetos, pero alusar %random% y for ciclo, podemos 'generar' alfabetos.Esta es una idea simple de cómo funciona esto.set /a result=(%random%*26/32768)+1for /f "tokens=%result%" %%I in ("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z") do (echo %%I)• El primer set /a declaración genera un número aleatorio N entre 1 y 26• La instrucción for /f selecciona el elemento N th de una lista de la A a la Z.○ Devolver el resultadoUno puede poner un total de 31 artículos en 1 for bucle, y prácticamente artículos ilimitadosusando [este método]. ( Lote - para orden de parámetros de buclePseudoaleatorio y uniforme al azar en loteDistribución pseudoaleatoriaDe acuerdo con esta respuesta de desbordamiento de pila , el usuario CherryDT señaló estecódigo:set /a num=%random% %% 100No da una distribución uniforme.La variable dinámica interna %random% hace da una distribución uniforme, pero el código deseguridad no será un azar uniformado. Este código genera un número aleatorio entre 0 ~ 99, peroel resultado no será uniforme. 0 ~ 67 ocurrirán más de 68 ~ 99 desde 32767 MOD 100 = 67 .Para generar una distribución aleatoria uniforme usando el código anterior, entonces se debecambiar 100 . Aquí hay un método para obtener un número que crea una distribución uniforme.https://riptutorial.com/es/home 6
- Page 1 and 2: batch-file#batch-file
- Page 3 and 4: Archivos por lotes con más de 9 ar
- Page 5 and 6: @Echo off 38Encendiendo el eco en l
- Page 7 and 8: Macros en secuencia de comandos 57C
- Page 9 and 10: Sintaxis 80Parámetros 80Observacio
- Page 11 and 12: Capítulo 1: Comenzando con el arch
- Page 13: notepad first.batObteniendo ayudaPa
- Page 17 and 18: Capítulo 3: Añadir retraso al arc
- Page 19 and 20: REM 1.1.1.1 is an non-existing IP s
- Page 21 and 22: asignar valores de argumento a la m
- Page 23 and 24: Capítulo 5: Archivos por lotes e h
- Page 25 and 26: Capítulo 6: Buscar cadenas en lote
- Page 27 and 28: cd "<path>"Ejemplo:cd "C:\Program F
- Page 29 and 30: Capítulo 8: Comentarios en archivo
- Page 31 and 32: || para reemplazar & .Ejemplo:@echo
- Page 33 and 34: Formato:[command] [> | >>] [filenam
- Page 35 and 36: El intérprete de comandos trata to
- Page 37 and 38: Lote Golpetazo Descripcióncommand
- Page 39 and 40: Lote Golpetazo Descripciónen valor
- Page 41 and 42: Capítulo 11: Directorio de pilaSin
- Page 43 and 44: Capítulo 12: EcoIntroducciónecho
- Page 45 and 46: > echo off> echoECHO is off.> echo
- Page 47 and 48: (This will output:if %example%=="He
- Page 49 and 50: SoluciónDe acuerdo con un set /? d
- Page 51 and 52: Capítulo 14: Escapar de personajes
- Page 53 and 54: Findstr viene con un montón de per
- Page 55 and 56: Capítulo 15: Evitar las limitacion
- Page 57 and 58: Capítulo 16: FuncionesObservacione
- Page 59 and 60: call :stuff 123 var1rem More code..
- Page 61 and 62: Capítulo 17: Híbridos por lotes y
- Page 63 and 64: Capítulo 18: Híbridos por lotes y
Capítulo 2: Aleatorio en archivos por lotes
Examples
Números al azar
Usando la variable dinámica %Random% , podemos obtener un entero aleatorio de 0 a 32767. Por
ejemplo:
echo %random%
Obviamente, esto devuelve un número entero de 0 a 32767. Pero a veces queremos que esté en
un rango específico, digamos de 1 a 100.
Generando números aleatorios dentro de rango específico
El método básico para hacerlo se detalla a continuación.
set /a result=(%RANDOM%*max/32768)+min
donde max es el número superior que se puede generar, y min es el número más pequeño que se
puede generar. Tenga en cuenta que no obtendrá ningún número decimal porque set /a
redondea automáticamente. Para generar un número aleatorio decimal, intente esto:
set /a whole=(%RANDOM%*max/32768)+min
set /a decimal=(%RANDOM%*max/32768)+min
echo %whole%.%decimal%
Generando números aleatorios mayores que 32767
Si intentas
set /a whole=(%RANDOM%*65536/32768)+1
lo más probable es que obtengas números aleatorios que son impares.
Para generar números más grandes que 32767, aquí hay un método mejor.
set /a result=%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%%random:~-1%
El código anterior extrae el carácter 1 de cada %random% . Pero esto se hace a propósito.
Dado que el número random podría ser un número de un dígito, la extracción de los últimos 2
https://riptutorial.com/es/home 5