>>? ExtractFileOrFolderInZipFile(m.ZipFile, m.FileOrFolderToExtract, m.TargetFolder) >> >>FUNCTION ExtractFileOrFolderInZipFile(ZipFile AS String, ToExtract AS String, Location AS String, ShellExplorer AS Object, Tree AS String) >> >> LOCAL ShellObject && edited >> >> IF PCOUNT() < 4 >> m.ShellExplorer = CREATEOBJECT("Shell.Application") >> m.Tree = "" >> ENDIF >> >> FOR EACH m.ShellObject IN m.ShellExplorer.NameSpace(m.ZipFile + IIF(EMPTY(m.Tree),"","\" + m.Tree)).items >> >> IF UPPER(m.ShellObject.Name) == UPPER(m.ToExtract) >> m.ShellExplorer.NameSpace(m.Location).CopyHere(m.ShellExplorer.NameSpace(m.ZipFile).items.Item(m.Tree + m.ToExtract)) >> RETURN .T. >> ELSE >> IF m.ShellObject.IsFolder AND ExtractFileOrFolderInZipFile(m.ZipFile,m.ToExtract,m.Location,m.ShellExplorer,m.Tree + m.ShellObject.Name + "\") >> RETURN .T. >> ENDIF >> ENDIF >> >> ENDFOR >> >> RETURN .F. >> >>ENDFUNC >>>