2010-03-11 12 views
7

Vorrei utilizzare uno script PowerShell di Windows per eseguire un file batch ogni x numero di secondi. Quindi è lo stesso file batch che viene eseguito più e più volte.Eseguire un file batch ogni x numero di secondi utilizzando PowerShell

Ho fatto qualche ricerca, ma non riesco a trovare quello che sto cercando. È per qualcosa che voglio eseguire su una macchina Windows   XP. Ho usato Windows Scheduler un sacco di volte prima per qualcosa di simile, ma per qualche motivo Windows Scheduler viene eseguito solo una volta ... Quindi non più. Inoltre, non desidero che la chiamata al file batch venga eseguita da sola, poiché si verificherà un errore dopo che è stata eseguita così tante volte.

risposta

13

Basta mettere la chiamata al file batch in un ciclo while per esempio:

$period = [timespan]::FromSeconds(45) 
$lastRunTime = [DateTime]::MinValue 
while (1) 
{ 
    # If the next period isn't here yet, sleep so we don't consume CPU 
    while ((Get-Date) - $lastRunTime -lt $period) { 
     Start-Sleep -Milliseconds 500 
    } 
    $lastRunTime = Get-Date 
    # Call your batch file here 
} 
+0

grande ... grazie per l'aiuto rapido .. grandi opere – jvcoach23

+5

Keith, perché non solo 'while (1) {sonno -sec 45; . \ script.ps1} '? – stej

+3

Dipende se l'obiettivo è di eseguire letteralmente sempre 'x' secondi (supponendo che qui il file batch impieghi meno di' x' secondi per l'esecuzione) OPPURE se deve essere eseguito dire 20 secondi una volta, sleep 25, eseguire un secondo tempo e prendere 30 secondi e poi dormire 25. Quindi il periodo di tempo varia (45 - 55 secondi). Se ciò non ha importanza, semplificalo con un semplice sonno. –

Problemi correlati