Configurar pasta de Backup.
04/02/2014
0
Estou com um programa que faz o bkp de uns arquivos. exemplo. dbug*.txt e copia para uma pasta debug\bkp_pop\.
ate ai tudo bem, consegui fazer. so que mim deparei com um problema. o meu programa tem que funcionar em rede. tambem.
Exemplo.
o executavel que gerar o debub. e de outro programador. e ele pode ser instalado no servidor/ecf, ou servidor mapeado para a ecf, entao vou mostra o codigo que eu consegui fazer executar. no servidor/ecf,
namespace Limppop { public partial class Limpando : Form { private void Limpando_Load(object sender, EventArgs e) { #region "Aqui Limpando o pop debugs" string arquivoTexto = "debug*.txt"; //string sourcePath = Environment.CurrentDirectory + "\\"; string sourcePath = "\\syspaf\\pop\\"; string bkpPatchpop = "bkp_pop"; /// *** arquivo que vai ser procurado *** /// // aqui vou colocar a chamado de todos os arquivos.... try { // Only get files that begin with the letter "c." //string[] dirs = sourcePath.GetTypeS(@"c*"); //sstring[] dirarquivos = sourcePath.GetType(arquivoTexto); // ARQUIVO DE BKP string arquivos = sourcePath + arquivoTexto; string[] dirs = Directory.GetFiles(sourcePath, arquivoTexto); foreach (string dir in dirs) { //** começa aqui string diretoriobkp = sourcePath + bkpPatchpop + sourcePath; bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp); if (!sVerificacaobkpPatchpop) { Directory.CreateDirectory(diretoriobkp); } bool sVerificacao = File.Exists(dir); if (sVerificacao) { string arquivonovo = sourcePath + bkpPatchpop + dir; #region "removendo o debug se estiver repetido" try { if (File.Exists(arquivonovo) == false) { File.Move(dir, arquivonovo); } else { File.Delete(arquivonovo); File.Move(dir, arquivonovo); } } catch (IOException errorarquivo) { listBoxLimpando.Items.Add(errorarquivo.Message + " erro ao copiar arquivo " + dir + " para " + arquivonovo); } #endregion } else { listBoxLimpando.Items.Add("Alerta erro: Este arquivo não existe (" + dir + ") \n Saindo do sistema.... Processando os Debugs"); } } } catch (Exception errorn) { MessageBox.Show(errorn.Message + " \n Problema ao executar a limpesa dos Debugs ","Processando os Debugs"); MessageBox.Show("Saindo da Aplicação porque " +errorn.Message,"Terminando o Processo!",MessageBoxButtons.OK,MessageBoxIcon.Error); this.Close(); } #endregion
Entao com este codigo acimo funciona que é uma beleza, só que troco a variavel
string sourcePath = "\\syspaf\\pop\\"; por string sourcePath = Environment.CurrentDirectory + "\\";
aparece o seguinte erro na hora de gravar o bkp. c:syspaf\pop\bkp_pop\c:\syspaf\debug*.txt
ele repet o "c:" duas vezes e nâo sei como resolver.
alguem poderia mim dar alguma ajuda. obrigado.
Alexssandro Lima
Posts
05/02/2014
Joel Rodrigues
05/02/2014
Alexssandro Lima
Este codigo e porque eu nao consegui eviar para a pasta bkp_pop entao criei esta chamada
string diretoriobkp = sourcePath + bkpPatchpop + sourcePath;
para que ele enviar para um diretorio de bkp. vc tem alguma ideia melhor para que eu use.
obrigado.
05/02/2014
Joel Rodrigues
Se for, experimente verificar se o diretório bkp_pop existe. Se não existir, crie ele e então copie os arquivos.
05/02/2014
Alexssandro Lima
Se for, experimente verificar se o diretório bkp_pop existe. Se não existir, crie ele e então copie os arquivos.
como tem no codigo acima. caso nao existir a pasta ele cria,
tubo normal e funcionando. mais quando eu troco o codigo como abaixo.
string sourcePath = "\syspaf\pop\"; por string sourcePath = Environment.CurrentDirectory + "\";
ele repeto o local que esta sendo executado tudas vezes. e eu nao sei como tirar.
exemplo
string sourcePath = "\syspaf\pop\";
com este codigo ele pega a pasta \syspaf\pop\debug*.txt para \syspaf\pop\bkp_pop\syspaf\pop\debug*.txt
ate ai ele funcionar lega. e salva, cria se nao existir,
quando eu uso
string sourcePath = Environment.CurrentDirectory + "\";
ele cria c:\syspaf\pop\debug*.txt para c:\syspaf\pop\bkp_pop\C:\syspaf\pop\debug*.txt.
e dar o erro IOException que repete o c:\ duas vezes. e eu nao consegui ageitar.
por que isso.
proque uso tanto no c:\syspaf\pop. como no z:\pop\ e eu so consegui funcionar no \syspaf\pop\
e colocano
string sourcePath = Environment.CurrentDirectory + "\";
se alguem poder mim ajudar.
06/02/2014
Joel Rodrigues
06/02/2014
Alexssandro Lima
ola. bom dia!
um nome fixo eu nao consegui fazer.
porque, o sistema pega varias debug*.txt, exemplo. dbug010214,debug020214,debug030214, entao ele cria um list
string[] dirs = Directory.GetFiles(sourcePath, arquivoTexto);
06/02/2014
Joel Rodrigues
string diretoriobkp = sourcePath + bkpPatchpop + sourcePath; bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp); if (!sVerificacaobkpPatchpop) { Directory.CreateDirectory(diretoriobkp); }
Você cria o diretório, mas não usa depois, pois você move os arquivos para uma pasta composta de sourcePath+ bkpPatchpop + dir. Poderia conferir isso, por favor?
06/02/2014
Alexssandro Lima
string diretoriobkp = sourcePath + bkpPatchpop + sourcePath; bool sVerificacaobkpPatchpop = Directory.Exists(diretoriobkp); if (!sVerificacaobkpPatchpop) { Directory.CreateDirectory(diretoriobkp); }
Você cria o diretório, mas não usa depois, pois você move os arquivos para uma pasta composta de sourcePath+ bkpPatchpop + dir. Poderia conferir isso, por favor?
lembrei, o +dir, e o nome dos arquivos que ele vai nomear quando mover. exemplo.
\syspaf\pop\debug123.txt para \syspaf\pop\bkp_pop\syspaf\pop\debug123.txt
\syspaf\pop\debug124.txt para \syspaf\pop\bkp_pop\syspaf\\popdebug124.txt
entao o dir e o comjunto de diretoriobko= \syspaf\bkp_pop\ + dir = \syspaf\pop\debug*.txt
entao e nesta hora que eu uso o "dir." nao sei se vc entendeu.
obrigado por mim ajudar. porque neste codigo eu queria usar o
string sourcePath = Environment.CurrentDirectory + "\"
mais do geito que esta o codigo esta funcionando. em varios clientes. so nao consegui modificar para os clientes que usam em redes.
eu tinha um batch, e resolvi crialo em c# para mim ajudar na univercidade que estou fazendo.
aguardo alguma resposta do amigo.
06/02/2014
Joel Rodrigues
Eu ainda insisto que não precisa desse sourcePath no final, dá pra fazer sem isso.
07/02/2014
Alexssandro Lima
Eu ainda insisto que não precisa desse sourcePath no final, dá pra fazer sem isso.
Estou fazendo novos teste, quando eu termnar vou posta aqui para vc ver. como esta ficando. acho que hoje a noite eu vou terminar. entao volto a posta-lo para vc verifica junto comigo.
porque o que o codigo que eu coloquei esta funcionando. entao estou colocando o que tem este
string sourcePath = Environment.CurrentDirectory + "\";
obrigado pela antenção.
08/02/2014
Alexssandro Lima
string arquivoTexto = "debug*.txt"; string sourcePath = Environment.CurrentDirectory + "\\"; //troquei pelo o outro //string sourcePath = "\\syspaf\\pop\\"; string bkpPatchpop = "bkp_pop" + "\\"; //coloquei para colocar as "\\"
modifiquei aqui"
string diretoriobkp = sourcePath + bkpPatchpop; // retirei o ultimo daqui para tirar " sourcePath " MessageBox.Show("Diretorio sourcePath " + sourcePath + "\r \n bkpPatchpop " + bkpPatchpop + "\r \n bkp " + diretoriobkp);
modifiquei aqui tambem.
string arquivonovo = sourcePath + bkpPatchpop; // modifiquei aqui retirando o "dir" MessageBox.Show("sourcePath ( " + sourcePath + " ) \r \n bkpPatchpop ( " + bkpPatchpop + " ) \r \n Arquivo que vai ser modificado ( " + arquivonovo + " ) na Execusão ");
na hora de mover o arquivo para a pasta de backup , te que ter o nome do arquivo para qual ele vai mover. entao eu nao consegui colocar ,
File.Move(dir, arquivonovo);
dir = local + nome arquivo
arquivonovo = local + nome do arquivo
se olha no foto abaixo nao vai aparecer o nome do arquivo que ele vai mover.
[img:descricao=arquivo achado e nao tem o nome de onde ele vai.]http://arquivo.devmedia.com.br/forum/imagem/320947-20140208-013052.png[/img]
pode se que agora fica mais facil de entender o que estou querendo.
obrigado esperando alguma resposta.
08/02/2014
Joel Rodrigues
Para isso, você pode usar a classe FileInfo para pegar só o nome do arquivo e concatenar na variável arquivonovo. Exemplo:
FileInfo finfo = new FileInfo(dir); string arquivonovo = sourcePath + bkpPatchpop + finfo.Name;
14/02/2014
Alexssandro Lima
Para isso, você pode usar a classe FileInfo para pegar só o nome do arquivo e concatenar na variável arquivonovo. Exemplo:
FileInfo finfo = new FileInfo(dir); string arquivonovo = sourcePath + bkpPatchpop + finfo.Name;
boa noite. amigo, você foi de muita ajuda. uma seguencia de comando simples. resolveu quase um mes de sofrimento.
obrigado, esta concluido com sucesso funcionando 100%
ja estou fazendo outro projeto para fazer bkp usando u winrar.exe. nesta mesma linha de comandos.
e salvar em um servidor linux com o pscp.exe
..
17/02/2014
Joel Rodrigues
Quando for fazer a parte de compactação, dê uma olhada nesse post antes de usar o WinRar: [url:descricao=Compactando e extraindo diretórios em C#]https://www.devmedia.com.br/compactando-e-extraindo-diretorios-em-c-dica/28528[/url].
Abraço.
Clique aqui para fazer login e interagir na Comunidade :)