2012-01-05 11 views

Respuesta

13
PS> $ts = New-TimeSpan -Seconds 1234567 
PS> '{0:00}:{1:00}:{2:00}' -f $ts.Hours,$ts.Minutes,$ts.Seconds 
06:56:07 

o

PS> "$ts" -replace '^\d+?\.' 
06:56:07 
+1

Muchas gracias Shay! Terminé haciendo lo siguiente: $ start = (get-date) Write-Host "Guión empezaban a $ start" para ($ i = 1; i $ -lt 5; $ i ++) { Get- proceso | fuera nula del sueño 1 echo "Mi script va aquí Déjame contar a 5 para usted:. $ i" } $ final = (Get-Date) $ lapso de tiempo = new-lapso de tiempo -seconds $ (($ end- $ start) .totalseconds) $ elapsed = '{0:00} h: {1:00} m: {2:00} s' -f $ timespan.Hours, $ timespan.Minutes, $ timespan. Segundos write-host "Tiempo: $ transcurrido" – Sune

+0

(¿ese comentario es incluso legible?) – Sune

+2

Sí, básicamente obtiene la fecha de inicio y finalización y resta una forma de otra, el resultado es un objeto de intervalo de tiempo que puede formatear utilizando -f operator (ej. $ timespan = $ start- $ end; '{0:00}: {1:00}: {2:00}' -f $ ts.Hours, $ ts.Minutos, $ ts.Segundos) . –

7

Todo lo que tiene que hacer es usar el cmdlet Measure-Command para obtener el tiempo:

PS > measure-command { sleep 5} 


Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 5 
Milliseconds  : 13 
Ticks    : 50137481 
TotalDays   : 5.80294918981481E-05 
TotalHours  : 0.00139270780555556 
TotalMinutes  : 0.0835624683333333 
TotalSeconds  : 5.0137481 
TotalMilliseconds : 5013.7481 

El mismo resultado anterior podría ser lo suficientemente bueno para usted, o usted puede formatearlo apropiadamente ya que la salida de Measure-Command es un objeto TimeSpan. O puede usar ToString:

PS > (measure-command { sleep 125}).tostring() 
00:02:05.0017446 
+0

Gran respuesta. Tuve este mismo problema y .toString() fue perfecto. Para mí, era mejor que analizar el valor de cada tiempo desde el comando measure o convertir los tipos de tiempo. ¡Gracias! – tresstylez

Cuestiones relacionadas