es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dormir en CMD – Se necesita un truco sucio

Si escribes un script en .cmd y necesitas que tu programa se detenga, normalmente tendrás varias opciones. Puedes usar:

ping -n 5 localhost > nul

o

timeout /T 5 /NOBREAK > nul

o llamar al método Start-Sleep de PowerShell.

Mi problema es que todos estos métodos generan procesos adicionales. Si usas el método timeout, por ejemplo, se crea el siguiente proceso:

https://i.stack.imgur.com/RThlA.png

Lo mismo ocurre con el método ping. Si usas Start-Sleep, se crea un proceso de PowerShell. Por razones complicadas de explicar (y no muy interesantes para otros de todos modos), no puedo hacer esto. De alguna manera tengo que asegurarme de que mi script .cmd se detenga durante unos 5 segundos.

¿Alguien puede pensar en un truco sucio para hacer que el script .cmd se detenga durante unos 5-7 segundos? Los únicos requisitos son: (1) no se generan subprocesos y (2) no es demasiado intensivo en recursos (el uso de la CPU no debe ser demasiado alto).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una opción para hacer que el script .cmd pause alrededor de 5-7 segundos sin generar procesos adicionales y ser eficiente en recursos es utilizar el comando “choice”.

    El comando “choice” espera a que el usuario presione una tecla dentro de un período de tiempo especificado. Al especificar un tiempo de espera de 5-7 segundos y no permitir que se presione ninguna tecla, el script se pausará durante el tiempo deseado sin utilizar recursos adicionales ni generar procesos secundarios.

    Aquí se muestra un ejemplo de comando que utiliza el comando “choice”:

    choice /C x /T 5 /D x > nul
    

    Este comando espera 5 segundos (especificados por la opción “/T 5”) a que el usuario presione la tecla “x” (especificada por la opción “/C x”). Como la opción “/D x” especifica la elección predeterminada como “x”, el comando no avanzará hasta que se alcance el período de tiempo de espera. El “> nul” al final se utiliza para suprimir cualquier salida del comando.

    En general, el comando “choice” es una forma simple y eficaz de pausar un script .cmd sin generar procesos adicionales o ser demasiado exigente en recursos.

Comments are closed.