Saltar al contenido

¿Cómo mido el tiempo de ejecución de un comando en la línea de comandos de Windows?

Hacemos una revisión exhaustiva cada post de nuestra web con la meta de enseñarte siempre información veraz y actual.

Solución:

PowerShell tiene un cmdlet para esto llamado Measure-Command. Deberá asegurarse de que PowerShell esté disponible en la máquina que lo ejecuta.

PS> Measure-Command  echo hi 

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 0
Ticks             : 1318
TotalDays         : 1.52546296296296E-09
TotalHours        : 3.66111111111111E-08
TotalMinutes      : 2.19666666666667E-06
TotalSeconds      : 0.0001318
TotalMilliseconds : 0.1318

Measure-Command captura la salida del comando. Puede redirigir la salida a su consola usando Out-Default:

PS> Measure-Command  echo hi 
hi

Days              : 0
...

Measure-Command devuelve un TimeSpan objeto, por lo que el tiempo medido se imprime como un montón de campos. Puede formatear el objeto en una marca de tiempo string utilizando ToString():

PS> (Measure-Command  Out-Default ).ToString()
hi
00:00:00.0001318

Si el comando dentro Measure-Command cambia el color del texto de la consola, usa [Console]::ResetColor() para restablecerlo a la normalidad.

Si quieres

  1. Para medir el tiempo de ejecución hasta la centésima de segundo en (formato hh:mm:ss.ff)
  2. Para no tener que descargar e instalar un paquete de recursos
  3. Para parecer un gran nerd de DOS (quién no)

Intente copiar el siguiente script en un nuevo archivo por lotes (por ejemplo, tiempocmd.bat):

@echo off
@setlocal

set start=%time%

:: Runs your command
cmd /c %*

set end=%time%
set options="tokens=1-4 delims=:.,"
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100

set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %hours% lss 0 set /a hours = 24%hours%
if 1%ms% lss 100 set ms=0%ms%

:: Mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)

Uso

Si coloca timecmd.bat en un directorio en su ruta, puede llamarlo desde cualquier lugar como este:

timecmd [your command]

P.ej

C:>timecmd pause
Press any key to continue . . .
command took 0:0:1.18

Si desea realizar una redirección de salida, puede citar el comando de esta manera:

timecmd "dir c:windows /s > nul"

Esto debería manejar los comandos que se ejecutan desde antes hasta después de la medianoche, pero la salida será incorrecta si su comando se ejecuta durante 24 horas o más.

Jeje, la solución más simple podría ser esta:

echo %time%
YourApp.exe
echo %time%

Esto funciona en todos los Windows listos para usar.


En el caso de una aplicación que use salida de consola, puede ser conveniente almacenar la hora de inicio en una variable temporal:

set startTime=%time%
YourApp.exe
echo Start Time: %startTime%
echo Finish Time: %time%

Sección de Reseñas y Valoraciones

Recuerda algo, que puedes permitirte esclarecer tu experiencia si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *