Sono un debuttante di VBScript, sto scrivendo uno script che analizzerà file di input di grandi dimensioni e richiederà probabilmente diversi minuti di esecuzione per completare l'elaborazione. Ho bisogno di un modo per avvisare gli utenti che lo script è in esecuzione senza errori durante questo lungo tempo di elaborazione. Il mio primo pensiero è stato quello di presentare un msgbox per ogni 1000 record elaborato (ad esempio "lo script ha elaborato con successo fino a 1000 record.") Non ho ancora decifrato il modo corretto di codificare un incrementatore che condizionerà un msgbox ogni N ° record (o determinato se c'è un modo migliore per raggiungere il mio obiettivo finale). Qualche idea?Notifica avanzamento script VBScript
risposta
In questi casi, mi piacerebbe utilizzare il metodo WshShell.Popup per fornire informazioni sullo stato attuale.
Ecco un esempio:
Dim WshShell, i
Set WshShell = CreateObject("WScript.Shell")
For i = 1 To 500
'Do Something
If i Mod 100 = 0 Then 'inform for every 100 process
WshShell.Popup i & " items processed", 1, "Progress" ' show message box for a second and close
End If
Next
Non utilizzare messaggi pop-up per questo a meno che non si vuole infastidire il heck fuori dei vostri utenti. Avvolgere il codice in un HTA che consente di visualizzare un indicatore di avanzamento come quello di this page, ad esempio:
<html>
<head>
<title>Sample</title>
<hta:application
applicationname="Sample"
scroll="no"
singleinstance="yes"
windowstate="normal"
>
<script language="vbscript">
Sub Window_onLoad
'your code here
End Sub
</script>
<style type="text/css">
* {
font-size: 1px;
margin: 1px;
}
div {
position: absolute;
left: 40%;
top: 50%;
}
marquee {
border: 1px solid;
height: 15px;
width: 200px;
}
marquee span {
height: 11px;
width: 8px;
background: Highlight;
float: left;
}
.handle-0 { filter: alpha(opacity=20); -moz-opacity: 0.20; }
.handle-1 { filter: alpha(opacity=40); -moz-opacity: 0.40; }
.handle-2 { filter: alpha(opacity=60); -moz-opacity: 0.6; }
.handle-3 { filter: alpha(opacity=80); -moz-opacity: 0.8; }
.handle-4 { filter: alpha(opacity=100); -moz-opacity: 1; }
</style>
</head>
<body>
<div>
<marquee direction="right" scrollamount="8" scrolldelay="100">
<span class="handle-0"></span>
<span class="handle-1"></span>
<span class="handle-2"></span>
<span class="handle-3"></span>
<span class="handle-4"></span>
</marquee>
</div>
</body>
</html>
Se si desidera fornire alcune informazioni più dinamico, si potrebbe per esempio aggiungere un paragrafo come questo per il corpo:
</div>
<p id="sline" style="visibility:hidden;">Processed
<span id="rcount"></span> Records.</p>
</body>
</html>
e aggiornarlo ogni 1000 record:
...
If numRows Mod 1000 = 0 Then
If sline.style.visibility = "hidden" Then sline.style.visibility = "visible"
rcount.innerText = numRows
End If
...
Se si esegue lo script in una finestra di console (tramite cscript.exe) allora si può visualizzare una barra di avanzamento finto direttamente nella finestra/output come questo:
prima dichiarare le seguenti funzioni nel file VBS:
Function printr(txt)
back(Len(txt))
printi txt
End Function
Function back(n)
Dim i
For i = 1 To n
printi chr(08)
Next
End Function
Function percent(x, y, d)
percent = FormatNumber((x/y) * 100, d) & "%"
End Function
Function progress(x, y)
Dim intLen, strPer, intPer, intProg, intCont
intLen = 22
strPer = percent(x, y, 1)
intPer = FormatNumber(Replace(strPer, "%", ""), 0)
intProg = intLen * (intPer/100)
intCont = intLen - intProg
printr String(intProg, ChrW(9608)) & String(intCont, ChrW(9618)) & " " & strPer
End Function
Function ForceConsole()
Set oWSH = CreateObject("WScript.Shell")
vbsInterpreter = "cscript.exe"
If InStr(LCase(WScript.FullName), vbsInterpreter) = 0 Then
oWSH.Run vbsInterpreter & " //NoLogo " & Chr(34) & WScript.ScriptFullName & Chr(34)
WScript.Quit
End If
End Function
Poi nella parte superiore dello script utilizzare il seguente esempio:
ForceConsole()
For i = 1 To 100
progress(i, 100)
Next
- 1. Notifica avanzamento thread in background in MVVM?
- 2. mostra la barra di avanzamento nella notifica locale cordova
- 3. Aggiorna barra di avanzamento nella barra di notifica
- 4. Aggiornamento della barra di avanzamento nell'area di notifica
- 5. Elevazione permesso da VBScript
- 6. Converti VBScript in Javascript
- 7. VBScript come unire WScript.Arguments?
- 8. Controllo della sintassi VBScript
- 9. vbscript debugger
- 10. Che cos'è & H14 & in VBScript?
- 11. Elenchi in VBScript
- 12. supporto di VBScript in Internet Explorer 11
- 13. VBScript/ASP Classic
- 14. Esiste "\ n" in VBscript?
- 15. VBScript, scopo del colon?
- 16. Conteggio XPath in VBScript
- 17. Servizio di notifica push Apple con script PHP
- 18. Notifica via email in jenkins basata su un'uscita di script
- 19. Rileva sistema operativo da script Bash e notifica utente
- 20. Aggiunta di una GUI a VBScript
- 21. Notifica notifica notif. IPhone
- 22. wscript.shell funziona in javascript ma non vbscript
- 23. Notifica di avanzamento in WCF per processi di lunga durata - Come?
- 24. Servizio di download Android personalizzato: riga di notifica di avanzamento per file
- 25. Barra di avanzamento nella barra di notifica durante il caricamento dell'immagine?
- 26. Verificare se esiste un oggetto in VBScript
- 27. Esiste un'implementazione VBScript di Markdown?
- 28. VBScript: Funzione restituisce un array
- 29. lettura file xml con vbscript
- 30. Comprensione dell'espressione Const in VBScript