2013-02-28 6 views

Répondre

2

Utilisez un script maître pour démarrer les scripts (enfants) via .Exec; surveiller les propriétés d'état des objets exec; journal/affiche l'heure à laquelle le statut de l'objet exec passe à WshFinished.

1

Ma suggestion est basée sur WMI. (Ci-dessous pour faire défiler idée fraîche)

Option Explicit 

Dim objWMIService, colProcesses, objProcess 
Dim iCount, iLoop, sFileName 

Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" _ 
    & ".\root\cimv2") 

' wait all scripts to finish 
Do While True 
    WScript.Sleep 200 
    ' snapshot running scripts 
    Set colProcesses = objWMIService.ExecQuery(_ 
     "Select * From Win32_Process " _ 
     & "Where Name = 'WScript.exe' " _ 
     & "OR Name = 'CScript.exe'", , 48) 

    iCount = 0 
    For Each objProcess In colProcesses 
     ' skip current "monitor" script, test the rest 
     If InStr (objProcess.CommandLine, WScript.ScriptName) = 0 Then 
      sFileName = Split(objProcess.CommandLine, """")(3) 
      iCount = iCount + 1 
     End If 
    Next 
    If iCount < 1 Then Exit Do 
    iLoop = iLoop + 1 
Loop 

' and show what we get 
If iLoop > 0 Then 
    WScript.Echo "LastOne:" & vbNewLine & sFileName 
Else 
    WScript.Echo "No other .vbs running except Me" 
End If 

[EDIT] Eh bien, une idée nouvelle venue à mon esprit en ce moment, peut-être vous trouverez intéressant, ou du moins lui donner un essai.

' do your work here... 
WScript.Sleep 3000 

Call SelfLogged 

Sub SelfLogged() 
    Const ForAppending = 8 
    With CreateObject("Scripting.FileSystemObject") 
     With .OpenTextFile(WScript.ScriptFullName, ForAppending) 
      .Write Chr(0) 
     End With 
    End With 
End Sub 

L'idée est de modifier le fichier DateLastModified propriété en ajoutant un char du fichier.

2

La journalisation de base fera l'affaire, écrire une entrée de journal lorsque le script commence et se termine, vous pouvez également enregistrer la durée. Vous pouvez écrire les résultats dans un fichier journal. Les résultats sont en secondes.

startTime=timer 
wscript.echo "started at " & startTime 
'do your stuff' 
wScript.sleep 500 
stopTime=timer 
wscript.echo "stopped at " & StopTime & " duration was " & stopTime - startTime 

'started at 81558,17 
'stopped at 81558,67 duration was 0,5 
Questions connexes