Necesito ejecutar un comando 100-200 veces, y hasta ahora mi investigación indica que tendría que copiar / pegar 100 copias de este comando, O usar un for
bucle, pero el for
bucle espera una lista de elementos, por lo tanto, necesitaría 200 archivos para operar, o una lista de 200 elementos, derrotando el punto.
Preferiría no tener que escribir un programa en C y documentar por qué tuve que escribir otro programa para ejecutar mi programa con fines de prueba. La modificación de mi programa en sí tampoco es una opción.
Entonces, dado un comando, a
¿cómo lo ejecutaría N
veces a través de un script por lotes?
Nota: no quiero un bucle infinito
Por ejemplo, así es como se vería en Javascript:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
¿Cómo se vería en un script por lotes que se ejecuta en Windows?
fuente
Respuestas:
for /l
es tu amigo:Comienza en 1, pasos por uno y termina en 100.
Use dos
%
s si está en un archivo por lotes(que es una de las cosas que realmente odio de las secuencias de comandos de Windows)
Si tiene varios comandos para cada iteración del bucle, haga esto:
o en un archivo por lotes
Clave:
/l
denota que elfor
comando operará de manera numérica, en lugar de operar en un conjunto de archivos%x
es la variable de bucles(valor inicial, incremento de valor, condición final [inclusive])
fuente
%x
es la variable de bucle,/l
(no\l
) significa que el comando for operará de manera numérica, en lugar de operar en un conjunto de archivos.for /l %x in (1, 1, 100) do echo %x
me sale "x no esperado".Y para iterar sobre los archivos de un directorio:
Debe usar "enableDelayedExpansion" y! FILENAME! en lugar de $ FILENAME $. En el segundo caso, DOS interpretará la variable solo una vez (antes de que ingrese al bucle) y no cada vez que el programa se repita.
fuente
Plantilla para un bucle simple pero contado:
Ejemplo: di "¡Hola mundo!" 5 veces:
Este ejemplo generará:
fuente
set /p loopcount="How many loops? "
para que pueda ejecutarlo con la entrada del usuario. Es mas practico.También puedes probar esto en lugar de un
for
bucle:Es bastante pequeño y es lo que uso todo el tiempo.
fuente
O puede disminuir / incrementar una variable por la cantidad de veces que desea realizar un bucle:
Obviamente, usar
FOR /L
es la carretera y esta es la calle secundaria que lleva más tiempo, pero llega al mismo destino.fuente
Podría hacer algo para el siguiente efecto evitando el bucle FOR.
fuente
Puede hacer esto sin una
for
declaración ^. ^:Tiene comprensión básica. Solo pruébalo. :PAGS
fuente
Forma muy básica de implementar bucles en la programación de cmd usando etiquetas
fuente
DOS no ofrece mecanismos muy elegantes para esto, pero creo que aún puede codificar un ciclo para 100 o 200 iteraciones con un esfuerzo razonable. Si bien no hay un
for
bucle numérico , puede usar una cadena de caracteres como una "variable de bucle".Codifique el bucle usando GOTO, y para cada iteración use
SET X=%X%@
agregar otro@
signo a una variable de entorno X; y para salir del bucle, compare el valor de X con una cadena de 100 (o 200)@
signos.Nunca dije que esto fuera elegante, ¡pero debería funcionar!
fuente
/a
opción delSET
comando evaluará una expresión numérica para el valor del lado derecho. Vea la documentación para SET . No es necesario hacer el truco de concatenación.set /a
en DOS. Afortunadamente, la pregunta es paracmd
... (en el momento de esta respuesta, el título de la pregunta era "bucle de script por lotes de DOS"No estoy seguro si ya se ha enviado una respuesta como esta, pero podría intentar algo como esto:
La variable% var% aumentará en uno hasta llegar a 100, donde el programa muestra que ha terminado de ejecutarse. Una vez más, no estoy seguro de si esto se ha enviado o algo así, pero creo que puede ser el más compacto.
fuente
Yo uso esto. Es casi lo mismo que los demás, pero es solo otra forma de escribirlo.
fuente
La respuesta realmente depende de qué tan familiarizado esté con el lote; si no tiene tanta experiencia, recomendaría incrementar una variable de bucle:
Pero si tiene más experiencia con el lote, le recomendaría que lo más práctico
for /l %loop in (1, 1, 10) do echo %loop
sea la mejor opción.fuente
Aquí hay un script de plantilla que usaré.
Lo que esto hace es cuando comienza, apaga el eco y luego ejecuta el "Loop", pero en ese lugar sigue yendo a "Loop" (espero que esto ayude).
fuente
un circuito completamente perfecto
puede editarlo cambiando el 10 en la línea 5 a cualquier número para representar cuántas veces desea que se repita.
fuente
(EDITADO) Lo hice para que se detenga después de 100 veces
Esto generará 4 números aleatorios cada 1 segundo 100 veces. Elimina el "tiempo de espera 1 / nobreak> nul" para que sea súper rápido
fuente
Probablemente use goto like
Esto hace un bucle inf (infinito).
fuente
infinite
es bastante más grande que lo solicitado100-200 times
, por lo que esto no responde la pregunta.Tengo 2 respuestas Métodos 1: Insertar Javascript en Batch
(No sé mucho sobre JavaScript)
Método 2: bucle en lote
(Gracias FluorescentGreen5)
fuente