Estimado mira yo lo hago asi inclusive puedes utilizar los 7.zip y el winrar. ambos desde consola, pero yo utilizo la lib de xharbour y resa asi..
Harbour Reference Guide
hbziparc lib
https://harbour.github.io/doc/hbziparc. ... _unzipfile
Function ZipCompoacto()
Local cFileDescargas := hb_CurDrive() + ":\" + "descargas\"+alltrim(oP:vPlacas)+"_"+AtRepl(":",Time(),"" )+"_"+AtRepl( "/", DtoC(Date()), "" )+".sql"
Local cFileDescargas1 := hb_CurDrive() + ":\" + "descargas\"+alltrim(oP:vPlacas)+"_"+AtRepl(":",Time(),"" )+"_"+AtRepl( "/", DtoC(Date()), "" )+".zip"
MSGRun( "Generando ventas , espere por favor...",;
"Creando... " ,;
{||oConVentas:Backup( aSelect, cFileDescargas , lDrop )} )
lOk := HB_ZipFile( cFileDescargas1, cFileDescargas, 9,,,"mipassword",.F.)
if !lOk
msgwait(">ZIp< 120-001 no procesado",Error en ZIP" ,1)
return nil
ENDIF Return nil
y para descomprimir utiliza algo asi...
FUNCTION Descomprime()
Local xcNewFile := "c:\recibir\Tarifas.zip"
IF FILE( xcNewFile )
Hb_UnZipFile(xcNewFile,,,"mipassword",, .f.) RETURN NIL
endif
Return NIL