Domanda

Sono venuto passato alcuni modi per causare un ritardo di tempo, come ping e dirs. Anche se nessuno di loro sono davvero precisi, c'è Anny modo corretto di causare un ritardo di tempo?

Ho sentito parlare di un paio di cose anche se non funzionano su tutti i computer, non sul mio Windows XP né Windows NT al college.

Ci vogliono secoli che passano attraverso tutti i file su Google trovare una buona risposta, e dato che non ho ancora trovato la domanda sulla Stack Overflow ho pensato che potrebbe essere buono per creare solo la domanda che mi;)

È stato utile?

Soluzione

sonno

E 'vi permetterà di fare questo.

Altri suggerimenti

<warning>This is a hack</warning>

Usa il tuo linguaggio di programmazione preferito (diversi batch di MS-DOS) e creare un programma che prende un argomento, il numero di millisecondi di attesa, quindi, è sufficiente chiamare il programma da un file batch per dormire la quantità necessaria.

Per quanto ne so, questo è l'unico modo affidabile per farlo in DOS.

Se non si ha la possibilità di inviare un altro programma insieme al file batch, utilizzare DEBUG per scrivere un comando di sonno al volo, ed eseguirlo.

EDIT: La risposta di cui sopra era un po 'la lingua-in-cheek. Non vorrei eseguire un file batch che aveva un po 'DEBUG inganno in esso. Credo che il modo tradizionale di utilizzare un ritardo in un file batch è il href="http://en.wikipedia.org/wiki/Choice_(command)" commad .

type nul|choice /c:y /t:y,nn > nul

Il che, naturalmente, non funziona in XP, dal momento che sarebbe WAAYY troppo comodo.

"... modo corretto ...."

Non è possibile farlo in DOS.

E 'possibile ottenere una precisione di pochi millisecondi, a seconda della velocità della vostra macchina.

Ho appena finito di creare un tale lotto, e anche se non condividere con voi il codice vero e proprio, ti darò alcune indicazioni:

  1. Utilizza variabile% tempo%, e dividere in sottostringhe (senza ":" e "") - una sottostringa otterrà i secondi, gli altri - minuti (si può aggiungere ore, per ritardi di oltre un'ora , e anche incorporare la data)

  2. Utilizzare impostato / A per trasformare le variabili temporali in 1 numero intero che rappresenta il numero di secondi trascorsi da un'ora arrotondato (X: 00: 00.00). Aggiungere il ritardo inputed (in secondi) a questo.

  3. Creare un ciclo breve, confrontando il valore del var combinato (spiegato nella sezione 2) sull'ora corrente (necessario recalc il curent valore sec combinato min +, all'interno di questo ciclo), e uscire dal ciclo quando la partita è vera.

Un importante bugfix qui - è necessario troncare eventuali zeri precedenti che a variabili che sono in procinto di ottenere valutata in un comando "set / A". Ho notato che valutatore della console (per questo comando) restituisce un errore quando si utilizza un intero con un precedente 08 o 09 (o semplicemente 08 o 09).

Nota: Questo funziona solo con estensioni ai comandi abilitati. Per provarlo, utilizzare il seguente all'inizio della routine:

verify other 2>nul
setlocal enableextensions
if errorlevel 1 goto err

E quindi aggiungere un gestore di errori subroutine denominata "err".

Se ci si vuole continuare la partita nello stesso file, utilizzare "endlocal" dopo la subroutine loop.

A proposito, questo vale SOLO per Windows XP Service Pack 2 o 3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top