Página 1 de 1

Compactar sem salvar o Path

Enviado: 16 Out 2017 17:52
por rubens
Boa tarde...

Alguém sabe se tem como compactar arquivos sem salvar o path?
No exemplo da pasta: C:\MiniGUI\SAMPLES\BASIC\Zip\demo.prg compacta os arquivos das pasta, só que salva o path. Daí se você visualizar o arquivo compactado vem todo o path e depois os arquivos.
Temo como compactar somente os arquivos sem a estrutura?
Eu já consigo compactar. Preciso compactar os xmls para enviar por email. A pasta dos xmls não é a mesma do programa. Geralmente é: C:\ACBRNFE\NFE\102017\NFE\*.XML, na hora que compacta vai todo este path. Daí o contador reclama, porque para descompactar tem que ficar abrindo estas pastas. Precisava que viesse somente os arquivos XML.

Obrigado
Rubens

Compactar sem salvar o Path

Enviado: 17 Out 2017 08:36
por Toledo
Rubens, é só tirar o parâmetro STOREPATH do comando COMPRESS.

Abraços,

Compactar sem salvar o Path

Enviado: 28 Nov 2017 20:12
por Mario Mesquita
Pessoal, boa noite.

Estou com o mesmo problema, arquivos em uma pasta que estão indo para o .zip com o path completo.

Na verdade, os arquivos estão em uma pasta e para o Compress achar os arquivos, tive que pôr o path, aí desanda tudo. Posso gerar na pasta do programa, mas fica melhor manter os arquivos guardados na pasta, mas se não tiver jeito...

Tentei usar o STOREPATH no Compress, mas quando o coloco, dá erro de compilação. Está assim:

Código: Selecionar todos

COMPRESS afiles                                               ;
  		   TO (xDest)                                           ;
		   BLOCK {|cFile,nPos| ProgressUpdate( nPos, cFile ) }  ;
		   OVERWRITE ;                                           
		   STOREPATH 
Se alguem tiver uma dica, agradeço a ajuda.

Abraço a todos,
Mario.

Compactar sem salvar o Path

Enviado: 28 Nov 2017 22:18
por JoséQuintas
Eu nem sei como se salva PATH junto com arquivos....
Olharam exemplos da minigui ou do Harbour?

Compactar sem salvar o Path

Enviado: 29 Nov 2017 08:32
por Mario Mesquita
Bom dia a todos.

Quintas, tá salvando sim. Não sei se porque estou dando o path dos arquivos para poder compactar e ele assume o path junto. O inconveniente é que fica a árvore toda lá do c: até a subpasta dos arquivos. Como é um arquivo para envio creio que o receptor não deseje esse monte de atalho dentro do zip.

A solução tosca será fazer o .zip na pasta onde fica o programa, mas é uma solução pouco elegante, até pq seria bom arquivar o que foi enviado.

Uma coisa boba dando um trabalhão, kkkk

Se alguém tiver uma dica, desde já agradeço.

Sds,
Mario.

Compactar sem salvar o Path

Enviado: 29 Nov 2017 11:35
por Daniel
Ola
Eu uso assim.
Incluir estas Libs, hbziparc.lib + hbmzip.lib + minizip.lib + hbzlib.lib para funcionar a senha
se não usar senha só esta ziparchive.lib

Código: Selecionar todos

#include "minigui.ch"

*-----------------------------
Function MAIN()
*-----------------------------
Public cBase:= 'c:\WinMenu\'

   SET CENTURY ON
   SET DATE ANSI
   SET ShowDetailError ON
   SET DELETED ON
   SET BROWSESYNC ON

 	DEFINE WINDOW Form_Backup ;
		AT 0,0 ;
		WIDTH 280 HEIGHT 200 ;
		TITLE 'Acesso ao Sistema de Backup' ;
		MAIN NOSYSMENU BACKCOLOR BLUE

		@  10, 30 PROGRESSBAR Progress_1 RANGE 0,  80 WIDTH 200 HEIGHT 26

		@  50, 30 PROGRESSBAR Progress_2 RANGE 0, 100 WIDTH 200 HEIGHT 26

		@  85, 30 LABEL label_1 VALUE '';
			WIDTH 200 HEIGHT 24 ;
			BACKCOLOR BLUE FONTCOLOR WHITE BOLD

	   @ 120, 85 BUTTON Bt_Login ;
   	   CAPTION '&Backup' ;
      	ACTION { || F_Backup()} ;
       	FONT "MS Sans Serif" SIZE 09 FLAT

	End WINDOW
	DoMethod("Form_Backup","Bt_Login","SetFocus")
	CENTER WINDOW Form_Backup
	ACTIVATE WINDOW Form_Backup
	Return Nil

**********************************************
Function F_Backup()
local aDiri := Directory(cBase + "*.*")
local afiles:= {}, x

	For x:= 1 To Len(aDiri)
		If Upper(SubStr(aDiri[x, 1], -3)) == 'DBF' .Or. Upper(SubStr(aDiri[x, 1], -3)) == 'FPT'
	   	AAdd(afiles, cBase + aDiri[x, 1])
	   EndIf
	Next
	Form_Backup.Progress_1.Value   := 0
	Form_Backup.Progress_2.RangeMax:= Len(afiles)
	COMPRESS afiles ;
		TO 'KipDbf.Zip' ;
		BLOCK {|cFile,nPos| ProgressUpdate(nPos, cFile) }  ;
		LEVEL 8  ;
		PASSWORD '[D1a2N3i4E5l6]' ;
		OVERWRITE ;
		FILEPROGRESS {|nPos, nTotal| ProgressFile(nPos, nTotal) }
	Form_Backup.Release
	Return nil

**********************************
Static Function ProgressUpdate( nPos, cFile )

	Form_Backup.Progress_1.Value:= nPos
	Form_Backup.Label_1.Value   := TokenUpper(Lower(cFileNoPath(cFile)))
	Return Nil

**********************************
Static Function ProgressFile(nPos, nTotal)

	Form_Backup.Progress_2.Value:= ( nPos / nTotal ) * 100
	Return Nil

Compactar sem salvar o Path

Enviado: 30 Nov 2017 13:56
por Mario Mesquita
Boa tarde a todos.

Parece piada, mas não sei como incorporar libs externas no HMG.

Com essas, ele zipa certinho, sem levar os paths junto? Aqui eu tive que gerar a partir da pasta do programa, aí vai sem nada.

Sds,
Mario.

Compactar sem salvar o Path

Enviado: 01 Dez 2017 15:24
por Daniel
o arquivo bat fica assim para testar
grava o zip sem o path

call c:\minigui\batch\compile.bat %1 /l hbziparc /l hbmzip /l minizip /l hbzlib