Versie 1
Voor het comprimeren van subdirectories van een directory naar een 7-zip archief met de naam van de subdirectory.
'Voor het comprimeren van alle subfolders van een folder met 7-zip. 'Bedoeld voor scheduled task 'on error resume next sourcefolder = "d:\Misc\uit dienst home dir\" destinationfolder = "D:\Misc\BACKUP\UITDIENST\" 'logfile en tooldir locatie mogen geen spaties bevatten. logfile = "C:\Logs\7zipCompressSubdirs-log.txt" tooldir = "c:\Tools\7-zip\" CONST HideWindow = 0 CONST WaitOnReturn = True Set objFso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") If objFso.FolderExists(sourcefolder) AND objFso.FolderExists(destinationfolder) Then Set WorkFolder = objFso.GetFolder(sourcefolder) For Each folder in WorkFolder.SubFolders If NOT objFso.FileExists(destinationfolder & folder.Name & ".7z") Then objShell.Run "CMD /C " & chr(34) & tooldir & "7za.exe a -t7z -r " & chr(34) & destinationfolder & folder.Name & ".7z" & chr(34) & " " & chr(34) & sourcefolder & folder.Name & "\*" & chr(34) & " -m0=PPMd -mx=9" & chr(34) & " >> " & logfile, HideWindow ,WaitOnReturn End If Next End If Set objShell = Nothing Set objFso = Nothing
Het stukje code chr(34) & sourcefolder & folder.Name & “\*” & chr(34) is nodig omdat als je & “\*” weglaat 7za.exe alle directories met dezelfde naam die in de sourcefolder en subdirecories staan meeneemt in het archiefbestand. Bijv C:\temp\foldera en c:\temp\folderb\tijdelijk\bestanden\foldera zouden beiden in een foldera.7z bestand terechtkomen. Ik ben er nog niet over uit of dit nu een bug is in 7za.exe of gewoon by design zo is. Nadeel van & “\*” is dat de directory niet in het archiefbestand staat, alleen de inhoud en subdirectories met inhoud. Bijv. C:\temp\foldera\tekst.txt staat in foldera.7z als tekst.txt en niet als \foldera\tekst.txt.