Wie pausiere ich VBS-Skript, während die Ordner gelöscht?
Schreibe ich ein VBScript für SyncBack (backup utility), in denen ich bin das löschen von alten Versionen einer Sicherung.
'' # if current version is greater than the total allowed number of versions,
'' # delete the oldest folder
If versionNumber > totalVersions Then
delDirNum = versionNumber - totalVersions
If delDirNum > 0 Then
DelFoldername = containerFileOrFolder & "\" & delDirNum & "_"
'' " # Ignore this line SO Prettify doesn't do VB very well.
If fso.FolderExists(DelFoldername) = True Then
WScript.Echo "Deleting: <" & DelFoldername & ">"
Set oFolder = objFileSystem.GetFolder(DelFoldername)
oFolder.Delete()
WScript.Sleep 2000
If fso.FolderExists(DelFoldername) = False Then
WScript.Echo "Deleted <" & DelFoldername & "> successfully"
Else
WScript.Echo "Could not delete <" & DelFoldername & ">"
End If
End If
End If
End If
Jedoch, gelegentlich wird der Ordner (enthält die alten backup), die ich versuche zu löschen, dauert länger als die 2 Sekunden mit WScript.Schlaf-2000 zu entfernen und ich Frage mich, ob es einen Weg, um das Skript warten, bis der Ordner gelöscht wurde, bevor es druckt "Gelöscht <Ordnername> erfolgreich".
Idealerweise würde ich gerne so etwas wie:
While oFolder.IsDeleting() Then
WScript.Echo "Still deleting..."
WScript.Sleep 2000
Loop
Aber ich bin gut bewusst, dass das wahrscheinlich nicht der Fall sein wird.
- Was ist der Typ von objFileSystem?
- FileSystemObject: msdn.microsoft.com/en-us/library/z9ty6h50(VS.85).aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schleife Schlaf mit Zählwerk Hinweis: übernimmt CScript host, der die "immer Noch Löschen" - Nachricht ein wenig mehr palettable. Die Verzögerung ist die im Beispiel 30 Sekunden.
Konnten Sie das löschen in seine eigene Funktion, und fügen Sie ein timeout. also wenn der Ordner nicht gelöscht werden in einer angemessenen Höhe der Zeit, liefert die Funktion löschen, ohne die Ordner. So etwas wie dieses:
Dann rufen Sie die Funktion wie folgt
WARNUNG: die Verwendung von On Error Resume Next ist nicht zu empfehlen.
Dieser Befehl bewirkt, dass alle Fehler ignoriert werden, und sollten nur verwendet werden, unter Aufsicht von Erwachsenen.
Nebenwirkungen können einschließen: Merkwürdige Fehler in andere Teile des Skriptes, unerwarteten Skript-Aktion, Kopfschmerzen, Schwindel, Verwirrung, Wut, oder einen plötzlichen Drang zu fluchen. In seltenen Fällen ist dieser Befehl wurde bekannt, dass Blutungen aus Augen und Ohren. Mit diesem Befehl führen kann, um die Haare und den Verlust des Arbeitsplatzes.
Warum nicht einfach überprüfen, um zu sehen, wenn der Ordner noch vorhanden ist, und beenden, sobald es Weg ist?
' Tun
'Wenn Ordner nicht vorhanden ist, beenden Sie Tun
'Schleife