timeout - Espera
En un archivo por lotes, a veces es necesario esperar un tiempo determinado, como sleep o wait en otros lenguajes de programación.
Por ejemplo, puede que quieras iniciar una aplicación con el comando start y esperar unos segundos a que esté lista antes de pasar al siguiente paso.
Para esperar un tiempo determinado en el símbolo del sistema o en un archivo por lotes, se usa el comando timeout. Aquí se explica su uso, desde lo básico hasta las opciones, con ejemplos de código.
Uso básico del comando timeout
El uso del comando timeout es el siguiente:
timeout /t <segundos> [/nobreak]
La opción /t es obligatoria. Si se ejecuta sin ella, se produce el siguiente error:
En /t se especifica el número de segundos de espera, en el rango de -1 a 99999.
Por ejemplo, para esperar 10 segundos:

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
El comando timeout no siempre espera el tiempo completo.
El comportamiento correcto es «esperar el tiempo especificado si el usuario no hace nada». Aunque se especifique timeout /t 10, si el usuario pulsa una tecla, la espera termina y se ejecuta el siguiente comando.
Para desactivar este comportamiento, se usa la opción /nobreak.
Con /nobreak, ninguna tecla salvo Ctrl + C puede interrumpir la espera.
Al pulsar Ctrl + C se interrumpe el propio archivo por lotes (se pregunta «¿Desea terminar el trabajo por lotes (S/N)?»).
Ejemplos del comando timeout
Esperar indefinidamente hasta que el usuario actúe
Al especificar -1 en la opción /t, se espera indefinidamente hasta que el usuario pulse una tecla.
También es útil al final de un archivo por lotes para mantener la ventana abierta y que el usuario pueda leer el resultado.
Añadir un tiempo de espera entre comandos en un archivo por lotes
Para añadir un tiempo de espera entre comandos, se escribe lo siguiente:
@echo off
setlocal
echo Proceso 1
timeout /t 10
echo Proceso 2
endlocal
Como no se especifica /nobreak, la espera termina cuando el usuario pulsa una tecla y se ejecuta Proceso 2.
Esperar siempre el tiempo completo entre comandos
Para evitar que las teclas interrumpan la espera, se especifica la opción /nobreak.
@echo off
setlocal
echo Proceso 1
timeout /t 10 /nobreak
echo Proceso 2
endlocal
Cuando el comando timeout no funciona
El comando timeout puede fallar con el siguiente error cuando se usa redirección de entrada (por ejemplo, timeout /t 10 < input.txt) o en entornos sin entrada estándar:
En estos casos, se puede esperar aprovechando el tiempo de respuesta de un ping a 127.0.0.1. En -n se especifica el número de segundos de espera más 1.
ping 127.0.0.1 -n 11 > nul
Lo anterior espera unos 10 segundos.