Я новичок VBScript, написав скрипт, который будет синтаксический анализ больших входных файлов и, вероятно, займет несколько минут, чтобы завершить обработку. Мне нужен способ предупредить пользователей о том, что скрипт работает без ошибок в течение этого длительного времени обработки. Моя первая мысль заключалась в том, чтобы представить msgbox для каждой обрабатываемой 1000-й записи (например, «скрипт успешно обработал 1000 записей».) Не совсем взломал надлежащий способ кодирования инкремента, который условно отключил бы msgbox каждую N-ю запись (или определяется, есть ли лучший способ достичь моей конечной цели). Есть идеи?Уведомление о ходе выполнения сценария VBScript
7
A
ответ
2
В таких случаях я хотел бы использовать метод WshShell.Popup для предоставления информации о текущем ходе.
Вот пример:
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
4
Не используйте всплывающие сообщения для этого, если вы не хотите, чтобы раздражать черт из ваших пользователей. Оберните ваш код в HTA, который отображает индикатор прогресса, как в this page, например:
<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>
Если вы хотите, чтобы обеспечить некоторую более динамическую информацию, можно, например, добавить пункт, как это тело:
</div>
<p id="sline" style="visibility:hidden;">Processed
<span id="rcount"></span> Records.</p>
</body>
</html>
и обновлять его каждые 1000 записей:
...
If numRows Mod 1000 = 0 Then
If sline.style.visibility = "hidden" Then sline.style.visibility = "visible"
rcount.innerText = numRows
End If
...
5
Если вы используете скрипт в окне консоли (через cscript.exe) то вы можете отобразить лже индикатор непосредственно в окне/вывода, как это:
Сначала объявить следующие функции в файле 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
Тогда в верхней части вашего сценария используйте следующий пример:
ForceConsole()
For i = 1 To 100
progress(i, 100)
Next
Смежные вопросы
- 1. jQuery отложенное обещание о ходе выполнения
- 2. Информация о ходе выполнения запроса MySQL
- 3. Как получить уведомление о ходе операций в ExcelStorage FileHelpers
- 4. Как сообщить о ходе выполнения тестов NUnit на сервере CruiseControl.NET?
- 5. Как вывести сообщения о ходе выполнения из инструкции SELECT?
- 6. Как показать сообщение о ходе выполнения при обновлении в PHP?
- 7. Использование Raiserror для отображения сообщения о ходе выполнения
- 8. Возможно ли иметь отчет о ходе выполнения для javax.xml.parsers.DocumentBuilder.parse (File)?
- 9. ScalaTest и SBT: отчетность о ходе выполнения тестового набора?
- 10. как отображать/сообщать о ходе выполнения задач (Async)?
- 11. Информирование пользователя о ходе выполнения процедуры sql в MS Access
- 12. Функция «перерасход» ИФ-то еще о ходе выполнения
- 13. Отчет о ходе выполнения WebClient с использованием TAP
- 14. Как получить сообщения о ходе выполнения для «обновления npm»?
- 15. Отчет о ходе выполнения долгосрочных запросов через API.ai?
- 16. Могу ли я получать сообщения о ходе выполнения операции отправки?
- 17. Диалог о ходе работы Asynctask
- 18. Как анимировать значок уведомления о ходе
- 19. Вызов пакетного сценария из сценария VBScript
- 20. Обратный звонок в ходе выполнения VideoView
- 21. Ошибка выполнения Microsoft VBScript
- 22. Выполнения SQL из VBScript
- 23. Ошибка выполнения Microsoft VBScript
- 24. Ошибка выполнения в VBScript
- 25. VBScript Ошибка выполнения «800a01b6»
- 26. Ошибка выполнения VBscript
- 27. Ошибка выполнения VBScript '800a0005'
- 28. Диалог о ходе разработки стилей в android
- 29. Как показать диалог о ходе конкретного представления
- 30. Как сообщается о ходе загрузки файла?