Come faccio ad attendere / sospendere un file batch per alcuni secondi?


57

Uso un file batch per avviare alcuni dei programmi di cui ho bisogno in esecuzione in background. Fino ad ora, avevo usato il comando pause per eseguirlo dopo che alcune delle altre start-up erano finite. Preferirei usare i comandi wait o sleep ma non sembrano essere inclusi in Windows 7.

Qualcuno sa come reinserire quei comandi o un metodo diverso che ottiene gli stessi risultati?


1
Oppure si potrebbe usare PowerShell: stackoverflow.com/questions/1741490/...
Berzemus

Wish a sleep.exe è stato fornito da MS come predefinito dal 2017 nella cartella system32 o nei file di programma / in qualsiasi posizione standard. Semplice c exe 40k o giù di lì!
tgkprog,

Come questo sleepcmd.com
tgkprog

Risposte:


30

Esistono molte utilità di sospensione che è possibile scaricare e rilasciare nella cartella System32, una è fornita con il Resource Kit di Windows Server 2003 chiamato sleep.exe.

Puoi anche usare il trucco ping:

:sleep
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL

quindi da qualche parte nel tuo file batch, puoi chiamarlo così:

CALL :sleep 1

1
il trucco del ping potrebbe essere usato come una soluzione temperante, ma preferirei uno che ha appena sospeso il processo, piuttosto che farlo impegnare per il momento. Inoltre, quale degli elementi in quella lista che hai collegato era quello che stavo cercando?
Cegorach,

Vuoi sleep.exe
John T

ho provato CALL: sleep 1 da un file batch di test e ha risposto con "il sistema non riesce a trovare l'etichetta batch specificata - SLEEP"
Cegorach

perché è necessario aggiungere la subroutine che ho pubblicato sopra. Call chiama solo la subroutine, ovvero le 3 righe che ho pubblicato sopra il comando call.
John T,

126

Puoi usare il timeoutcomando:

Questa utility accetta un parametro di timeout per attendere il periodo di tempo specificato (in secondi) o fino a quando non viene premuto un tasto qualsiasi. Accetta anche un parametro per ignorare la pressione del tasto.

Ad esempio, per attendere 10 secondi:

TIMEOUT /T 10

Per ulteriori dettagli:

TIMEOUT /?

1
perché questa non è stata scelta come la risposta corretta? quello attuale è molto inverosimile se me lo chiedi
Dany Khalife

7
@Dany: perché l'argomento è del 2009, quando la maggior parte delle installazioni erano XP. Prima di Vista, Timeout era solo nelle edizioni del server e nel Resource Kit, non su una normale installazione di XP. Al giorno d'oggi, infatti, la risposta corretta è Timeout.
marzo

6
@DanyKhalife A meno che non si desideri eseguire il processo in background. "ERRORE: il reindirizzamento dell'input non è supportato, uscendo immediatamente dal processo."
Annan,


6

C'è anche

waitfor SomethingThatIsNeverHappening /t 10

Che aspetterà tra 1 e 99999 secondi.



-1

Se hai installato Python (e hai aggiunto il percorso di installazione alla tua variabile di ambiente), puoi lasciare che Python faccia il sonno con qualcosa del tipo:

echo from time import sleep; sleep(3) | python

(Se hai Windows Vista o versioni successive, timeoutnaturalmente è la strada da percorrere, però.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.