Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leox

[Resolvido] Compactar e Descompactar com WinRar em C++ Builder

Recommended Posts

Olá mais uma vez pessoal do iMasters...

 

Para finalizar uma função de Backup e Restauração do meu sistema de TCC da facul, estou com uma certa dificuldade aqui...

 

De início, consegui desenvolver um algoritmo de Backup dos dados e arquivos utilizados pelo sistema, que ao final compacta através do WinRar (Linha de comando - WinExec) o diretório de DADOS dentro de outro diretório chamado "BACKUP".

 

Linha de comando que "invoca" o WinRar (BACKUP):

 

// ->>	//-- COMPACTAÇÃO DOS ARQUIVOS PARA O RAR --//
WinExec("C:\\Program Files\\WinRAR\\WinRAR.exe a -epl -k -r -m5 -agDD-MM-YY_HH-MM -padmin*123 .\\BACKUP\\backup_.rar .\\DADOS\\",SW_SHOW);

//Apresentação de mensagem final.
ShowMessage("Backup realizado com sucesso em "+Date()+" às "+Time());

 

Até aqui, beleza!!!

 

A questão surge no seguinte... o arquivo *.rar com tais dados e arquivos contém outros subdiretórios de "ARQUIVOS"... porém quando tento fazer o inverso (RESTAURAÇÃO) através do código abaixo, consigo extrair todos os arquivos para a pasta desejada, porém sem tais subdiretórios... é possível extrair tais arquivos com seus respectivos diretórios recipiente, porém não estou conseguindo há um bom tempo.

 

Linha de comando que "invoca" o WinRar (RECUPERAÇÃO):

 

          //Apagar psata de dados antigo.
	WinExec("cmd /c rmdir /s /q  .\\DADOS\\",SW_HIDE);


// ->>	//------------------------DESCOMPACTAÇÃO DOS ARQUIVOS DO RAR ----------------------------------

	//Capturando o nome do arquivo de backup.
	String filebackup = FileOpenDialogRestauracao -> FileName;

	//Variável que irá receber o caminho completo.
	String Rar;

	//Definindo o caminho completo
	Rar = "C:\\Program Files\\WinRAR\\WinRAR.exe e -padmin*123 "+filebackup+" .\\DADOS\\";

	//Passando o valor da String fullpath para o Char filetobackup.
	char* Rartobackup = Rar.c_str();

	//Executar comando Rar definido acima.
	WinExec(Rartobackup,SW_SHOW);

 

Alguém aí tem alguma idéia de como proceder?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido por mim mesmo... após exaustivas 72 horas de busca no Sr. Google.

 

O "X" da questão é o "x"... ^_^

 

No caso...

 

Apenas basta trocar na linha:

 

//Definindo o caminho completo
Rar = "C:\\Program Files\\WinRAR\\WinRAR.exe e -padmin*123 "+filebackup+" .\\DADOS\\";

 

Por:

//Definindo o caminho completo
Rar = "C:\\Program Files\\WinRAR\\WinRAR.exe x -padmin*123 "+filebackup+" .\\DADOS\\";

 

No mais, saudações a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.