procedure Archive lparameters tcZipFile, tcSourceDir if empty(m.tcZipFile) tcZipFile = inputbox("Enter zip file", ; "Enter zip file with the path", "temp.zip") if empty(m.tcZipFile) return "Zip file must be specified." endif endif if empty(m.tcSourceDir) tcSourceDir = getdir('','Select directory','Select directory to archive files') if empty(m.tcSourceDir) return "Source directory must be specified." endif endif tcSourceDir = addbs(m.tcSourceDir) local loShell, loFile, lcError lcError = "" try strtofile(chr(0x50) + chr(0x4B) + chr(0x05) + chr(0x06) + replicate(chr(0),18), m.tcZipFile) loShell = createobject("shell.application") for each loFile in loShell.NameSpace(m.tcSourceDir).items if upper(m.loFile.Path) <> upper(m.tcZipFile) if not m.loFile.IsFolder or (m.loFile.IsFolder and m.loFile.GetFolder().Items.Count > 0) loShell.NameSpace(m.tcZipFile).CopyHere(m.loFile) endif endif endfor catch to loErr lcError = Log_Error(m.loErr) endtry return m.lcError endprocFor a single file I may try filter method...