Hallo Zusammen,
Ich stehe vor einem kleinen Problem, welches die Implementierung eines Fortschrittbalkens in die FileCopy Methode des FileSystemObjects betrifft.
Ich nutze ein VBScript, um eine Datei über das Netzwerk zu kopieren. Wenn die Datei allerdings einige MB umfasst und die Performance des Netzwerkes etwas schlechter ist, kann es unter Umständen mehrere Sekunden/Minuten dauern, bis die Datei kopiert ist. In dieser Zeit tut sich auf dem Bildschirm jedoch nichts und der Anwender bleibt dem Fortschritt des Kopiervorgangs gegenüber im Unklaren.
Ich würde nun gerne eine Möglichkeit nutzen, welche den Anwender über den aktuellen Status des Kopierens informiert. Im Netz konnte ich nichts finden. Für Javascript und CSS und VB fand ich genügend Beispiele. Nur für VBScript nicht.. Sowas muss es doch auch für VBS geben, oder etwa nicht?
Von euch kann mir bestimmt jemand helfen, oder?
Viele Grüße
p41n
EDIT:
Ich habe doch noch ein Beispiel gefunden. Allerdings scheitere ich an dem Versuch es mit dem FilesystemObject und der CopyFile Methode zu verknüpfen. So, dass der aktuelle Fortschritt des Kopierens angezeigt wird. Es würde mir auch schon reichen, wenn in einer MsgBox von 0% bis 100% gezählt wird. Wichtig ist, dass man über den aktuellen Status informiert ist.
Und hier nun der Code, den ich fand:
Ich stehe vor einem kleinen Problem, welches die Implementierung eines Fortschrittbalkens in die FileCopy Methode des FileSystemObjects betrifft.
Ich nutze ein VBScript, um eine Datei über das Netzwerk zu kopieren. Wenn die Datei allerdings einige MB umfasst und die Performance des Netzwerkes etwas schlechter ist, kann es unter Umständen mehrere Sekunden/Minuten dauern, bis die Datei kopiert ist. In dieser Zeit tut sich auf dem Bildschirm jedoch nichts und der Anwender bleibt dem Fortschritt des Kopiervorgangs gegenüber im Unklaren.
Ich würde nun gerne eine Möglichkeit nutzen, welche den Anwender über den aktuellen Status des Kopierens informiert. Im Netz konnte ich nichts finden. Für Javascript und CSS und VB fand ich genügend Beispiele. Nur für VBScript nicht.. Sowas muss es doch auch für VBS geben, oder etwa nicht?
Von euch kann mir bestimmt jemand helfen, oder?
Viele Grüße
p41n
EDIT:
Ich habe doch noch ein Beispiel gefunden. Allerdings scheitere ich an dem Versuch es mit dem FilesystemObject und der CopyFile Methode zu verknüpfen. So, dass der aktuelle Fortschritt des Kopierens angezeigt wird. Es würde mir auch schon reichen, wenn in einer MsgBox von 0% bis 100% gezählt wird. Wichtig ist, dass man über den aktuellen Status informiert ist.
Und hier nun der Code, den ich fand:
Visual Basic-Quellcode
- Class ProgressBar
- Private m_PercentComplete
- Private m_CurrentStep
- Private m_ProgressBar
- Private m_Title
- Private m_Text
- Private m_StatusBarText
- 'Initialize defaults
- Private Sub ProgessBar_Initialize
- m_PercentComplete = 0
- m_CurrentStep = 0
- m_Title = "Progress"
- m_Text = ""
- End Sub
- Public Function SetTitle(pTitle)
- m_Title = pTitle
- End Function
- Public Function SetText(pText)
- m_Text = pText
- End Function
- Public Function Update(percentComplete)
- m_PercentComplete = percentComplete
- UpdateProgressBar()
- End Function
- Public Function Show()
- Set m_ProgressBar = CreateObject("InternetExplorer.Application")
- 'in code, the colon acts as a line feed
- m_ProgressBar.navigate2 "about:blank" : m_ProgressBar.width = 315 : m_ProgressBar.height = 40 : m_ProgressBar.toolbar = false : m_ProgressBar.menubar = false : m_ProgressBar.statusbar = false : m_ProgressBar.visible = True
- m_ProgressBar.document.write "<body Scroll=no style='margin:0px;padding:0px;'><div style='text-align:center;'><span name='pc' id='pc'>0</span></div>"
- m_ProgressBar.document.write "<div id='statusbar' name='statusbar' style='border:1px solid blue;line-height:10px;height:10px;color:blue;'></div>"
- m_ProgressBar.document.write "<div style='text-align:center'><span id='text' name='text'></span></div>"
- End Function
- Public Function Close()
- m_ProgressBar.quit
- End Function
- Private Function UpdateProgressBar()
- If m_PercentComplete = 0 Then
- m_StatusBarText = ""
- End If
- For n = m_CurrentStep to m_PercentComplete - 1
- m_StatusBarText = m_StatusBarText & "|"
- m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
- m_ProgressBar.Document.title = n & "% Complete : " & m_Title
- m_ProgressBar.Document.GetElementById("pc").InnerHtml = n & "% Complete : " & m_Title
- wscript.sleep 10
- Next
- m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
- m_ProgressBar.Document.title = m_PercentComplete & "% Complete : " & m_Title
- m_ProgressBar.Document.GetElementById("pc").InnerHtml = m_PercentComplete & "% Complete : " & m_Title
- m_ProgressBar.Document.GetElementById("text").InnerHtml = m_Text
- m_CurrentStep = m_PercentComplete
- End Function
- End Class
- 'Declare progressbar and percentage complete
- Dim pb
- Dim percentComplete
- 'Setup the initial progress bar
- Set pb = New ProgressBar
- percentComplete = 0
- pb.SetTitle("Step 1 of 5")
- pb.SetText("Copying bin/Debug Folder")
- pb.Show()
- 'Loop to update the percent complete of the progress bar
- 'Just add the pb.Update in your code to update the bar
- 'Text can be updated as well by pb.SetText
- Do While percentComplete <= 100
- wscript.sleep 500
- pb.Update(percentComplete)
- percentComplete = percentComplete + 10
- Loop
- wscript.sleep 3000
- 'This shows how you can use the code for multiple steps
- 'In a future iteration I will add a second bar to measure overall progress
- percentComplete = 0
- pb.SetTitle("Step 2 of 5")
- pb.SetText("Copying bin/Release Folder")
- pb.Update(percentComplete)
- Do While percentComplete <= 100
- wscript.sleep 500
- pb.Update(percentComplete)
- percentComplete = percentComplete + 10
- Loop
- pb.Close()
- wscript.quit
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „p41n“ ()