none
Cronometrar duração do script. RRS feed

  • Pergunta

  • Bom dia, existe alguma forma de eu medir quanto tempo dura um script em vbs e salvar essa informação em algum arquivo?

    Obrigado

    quinta-feira, 19 de abril de 2012 13:21

Respostas

  • Rafael,

    Usando VBScript eu não conheço uma forma nativa, eu faço um artificio, assim:

    hinicial=now
    
    while i<5
    	wscript.sleep 500
    	i=i+1
    
    wend
    
    duracao=datediff("s",hinicial,now)
    wscript.echo duracao

    Porém com o PowerShell é possivel utilizando Measure-Command, uma alternativa é você chamar o seu VBScript utilizando o PowerShell aí vc teria uma Saída mais detalhada, veja a saída quando eu chamei o script acima.

    PS C:\Users\fabio jr> Measure-Command{cscript X:\a.vbs}
    
    
    Days              : 0
    Hours             : 0
    Minutes           : 0
    Seconds           : 2
    Milliseconds      : 593
    Ticks             : 25933648
    TotalDays         : 3,00157962962963E-05
    TotalHours        : 0,000720379111111111
    TotalMinutes      : 0,0432227466666667
    TotalSeconds      : 2,5933648
    TotalMilliseconds : 2593,3648


    Fábio de Paula Junior

    • Marcado como Resposta Rafael Ximenes quinta-feira, 19 de abril de 2012 17:24
    quinta-feira, 19 de abril de 2012 13:33
    Moderador

Todas as Respostas

  • Rafael,

    Usando VBScript eu não conheço uma forma nativa, eu faço um artificio, assim:

    hinicial=now
    
    while i<5
    	wscript.sleep 500
    	i=i+1
    
    wend
    
    duracao=datediff("s",hinicial,now)
    wscript.echo duracao

    Porém com o PowerShell é possivel utilizando Measure-Command, uma alternativa é você chamar o seu VBScript utilizando o PowerShell aí vc teria uma Saída mais detalhada, veja a saída quando eu chamei o script acima.

    PS C:\Users\fabio jr> Measure-Command{cscript X:\a.vbs}
    
    
    Days              : 0
    Hours             : 0
    Minutes           : 0
    Seconds           : 2
    Milliseconds      : 593
    Ticks             : 25933648
    TotalDays         : 3,00157962962963E-05
    TotalHours        : 0,000720379111111111
    TotalMinutes      : 0,0432227466666667
    TotalSeconds      : 2,5933648
    TotalMilliseconds : 2593,3648


    Fábio de Paula Junior

    • Marcado como Resposta Rafael Ximenes quinta-feira, 19 de abril de 2012 17:24
    quinta-feira, 19 de abril de 2012 13:33
    Moderador
  • Rafael,

    Só explicando o VBS que eu passei.

    O script é somente o "miolo":

    while i<5
    	wscript.sleep 500
    	i=i+1
    wend
    

    O restante é o meu artificio para calcular o tempo:

    1-Gravo no inicio do script o datetime atual

    2- vem o script real

    3-Faço um datediff com a hora que iniciou o script e a hora atual.


    Fábio de Paula Junior

    quinta-feira, 19 de abril de 2012 13:36
    Moderador
  • Obrigado pela ajuda Fabio.

    Como eu não entendo bem de PowerShell, usei a função datediff, fiz uma pesquisa na internet e montei o script abaixo que atende às minhas necessidades:

    StrComputer = "."
    Function getMinSec(dt1, dt2)
     If (isDate(dt1) And IsDate(dt2)) = false Then
      getMinSec = "00:00:00"
      Exit Function
     End If
     intSeconds = Abs(DateDiff("S", dt1, dt2))
     intMinutes = intSeconds/60
     intHours = intMinutes/60
     intHours=Fix (intHours)      'usei o fix aonde invés do int para evitar que haja arrendondamento para mais quando o valor for superior a 5 antes da vírgula.
     intMinutes = intMinutes mod 60
     getMinSec = RIGHT ("00" & intHours,2) & " h - " & RIGHT ("00" & intMinutes, 2) & " min "
    End Function
    dt1=Time
    dt2=Time
    Data=getMinSec(dt1, dt2)
    Wscript.Echo Data

    No meu caso coloquei dt1 antes do parâmetro que quero medir no script e dt2 no final.

    quinta-feira, 19 de abril de 2012 17:18
  • Rafael / Fabio

    Boa noite tche.

    Aonde entra o scritp que deve ser cronometrado no caso do dt1 e dt2 ou no exemplo do Fabio, com o

    hinicial=now

    while i<5 wscript.sleep 500
    i
    =i+1

    wend

    duracao
    =datediff("s",hinicial,now)
    wscript
    .echo duracao

    domingo, 6 de maio de 2012 22:34