2017-03-06 6 views
0

Ich versuche ein VBScript zu verwenden, um einen gezippten Ordner zu löschen. Die Zip-Datei hat auch andere Ordner und Dateien.VBS Ordner aus dem Ordner "ZIP" löschen

bearbeiten beginnen: die Basis-Code ist aus: How to delete files from zip with VBScript Ende bearbeiten

Hier ist eine lokalisierte Probe des Drehbuchs habe ich versucht, es mit dem Löschen:

zipfile = "D:\testFolder\zippers\TestIt\New folder\your.zip" 
foldername = "New folder" 
destination  = "D:\testFolder\zippers\TestIt\New folder" 

Set app = CreateObject("Shell.Application") 
For Each f In app.NameSpace(zipfile).Items 
    If f.Name = foldername Then 
    app.Namespace(destination).MoveHere f, FOF_NOCONFIRMATION 
    End If 
Next 

Set fso = CreateObject("Scripting.FileSystemObject") 
fso.DeleteFolder fso.BuildPath(destination, foldername), True 

Leider Ordner in der ZIP-Reste . So scheint der MoveHere wie ein CopyHere stattdessen ... komisch

Kann jemand helfen? PS: Es gibt kein Lösch-Ordner-Tag, nur eine Lösch-Datei eins ...

Antwort

1

Es wäre nett, wenn Sie beim Kopieren someone else's code richtige Zuordnung gegeben haben.

Mit diesem gesagt, es sieht nicht wie das Shell.Application Objekt in der Lage ist, Ordner aus einem Zip-Archiv zu entfernen. Wenn Sie MoveFile in einem Ordner aufrufen, werden alle Dateien aus diesem verschachtelten Ordner aus dem Archiv entfernt, es verbleibt jedoch eine leere (untergeordnete) Ordnerstruktur.

Um den verschachtelten Ordner vollständig entfernen Sie 3rd-Party-Tools wie 7-zip verwenden müssen:

Function qq(s) : qq = """" & s & """" : End Function 

Set sh = CreateObject("WScript.Shell") 
sh.Run "C:\path\to\7z.exe d " & qq(zipfile) & " " & qq(foldername), 0, True 
+0

Tut mir leid. Du hast recht, ich habe mich einfach nicht daran erinnert, woher ich den Basiscode bekommen habe, bevor ich anfange, daran zu manipulieren ... Danke für den Tipp, aber leider versuche ich dies ohne irgendein Drittanbieterprogramm zu tun, ansonsten ich würde nur 7zip verwenden. Naja, als Herausforderung unmöglich;) Danke für beide. –