Copiar arquivos da rede com Serviço do Windows
Boa tarde Senhores. Sou novo aqui no forum. Por isso me desculpem se cometer alguma gaff.
Criei um serviço do Windows para fazer backups automaticamente e subir os arquivos para um servidor FTP.
Com os arquivos na maquina local, funciona normalmente, porém quando eu tento pegar os arquivos de outra maquina na rede não da certo, não gera nem uma ecessão porem também não copia. Eu testei o procedimento usando uma applicação e copia normalmente os arquivos pela rede, mas usando o serviço não.
Alguém ai poderia me dar uma ajuda para eu conseguir copiar esses arquivos na rede usando um serviço do Windos???
Desde já, fico grato...
Esse é o procedimento que estou usando:
Obs. Uso este procedimento ao invés do CopyFile, porque preciso usar coringas "*" nas cópias...
Criei um serviço do Windows para fazer backups automaticamente e subir os arquivos para um servidor FTP.
Com os arquivos na maquina local, funciona normalmente, porém quando eu tento pegar os arquivos de outra maquina na rede não da certo, não gera nem uma ecessão porem também não copia. Eu testei o procedimento usando uma applicação e copia normalmente os arquivos pela rede, mas usando o serviço não.
Alguém ai poderia me dar uma ajuda para eu conseguir copiar esses arquivos na rede usando um serviço do Windos???
Desde já, fico grato...
Esse é o procedimento que estou usando:
procedure Copia(Origem, Destino: String);
var
Parametros: Pchar;
str: string;
begin
Parametros := Pchar('"' + Origem + '" "' + Destino + '" /S /Y ');
ShellExecute(0, '', 'xCopy', Parametros, '', SW_HIDE);
end;
Obs. Uso este procedimento ao invés do CopyFile, porque preciso usar coringas "*" nas cópias...
Rawgleison
Curtidas 0
Respostas
Luiz
07/02/2014
Não entendi pq você não usa o CopyFile ...
Você pode usar "*" no CopyFile.
Você pode usar "*" no CopyFile.
procedure TFrmLogin.btnCopiaClick(Sender: TObject);
var
SR: TSearchRec;
I: integer;
Origem, Destino: string;
Origem_1, Destino_1: string;
begin
//camido da pasta na rede compartilhada
Origem := '\\servidor\documentos\';
//destinho local no meu pc
Destino := 'c:\tmp\';
I := FindFirst(Origem+'*.*', faAnyFile, SR); //neste caso estou pegando todos os arquivos (*.*) da pasta com todas extensões, pode usar *.xml por exemplo.
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
begin
Origem_1 := Origem + SR.Name;
Destino_1 := Destino + SR.Name;
if not CopyFile(PChar(Origem_1), PChar(Destino_1), false) then //false regrava, true não copia qdo ja existe msm nome
ShowMessage('Erro ao copiar ' + Origem_1 + ' para ' + Destino_1);
end;
I := FindNext(SR);
end;
end;
GOSTEI 0
Rawgleison
07/02/2014
Então, o Copyfile não copia quando é pela rede com serviço do windows, sobre o coringa que eu falei não é o "*.*' mas por exemplo, quero todo arquivo que inicie com GP_ e seja da extensão .gre ai nesse caso eu coloco "...caminho\GP_*.gre" , porem eu não queria fazer o tratamento no código, queria que foce por parâmetro passado pelo cliente. Por isso não usei Copyfile, mas de qualquer forma eu tentei esse código que vc passou, e na aplicação funciona, mas no serviço do Windows não... Mas muito obrigado pela ajuda... Ainda aguardo....
OBS. Pelo que vi ai, vc está pegando o evento OnClique de um button, logo percebe-se que é uma aplicação, o meu caso é em um serviço do Windows...
OBS. Pelo que vi ai, vc está pegando o evento OnClique de um button, logo percebe-se que é uma aplicação, o meu caso é em um serviço do Windows...
GOSTEI 0
Luiz
07/02/2014
mas qual a origem e destino que você esta passando para a copia?
fiz um teste rápido aqui com shellexecute e funcionou na rede,
De uma olhada neste artigo:
https://www.devmedia.com.br/artigo-clube-delphi-102-services-applications/11769
fiz um teste rápido aqui com shellexecute e funcionou na rede,
procedure TService1.ServiceCreate(Sender: TObject);
var
parametro, txtOrigem, txtDestino : String;
txtComando : PChar;
begin
parametro := '*.doc';
txtOrigem := '\\servidor\documentos\'+parametro;
txtDestino := 'C:\tmp\';
txtComando := Pchar('"' + txtOrigem + '" "' + txtDestino + '" /S /Y');
ShellExecute(0, '', 'xCopy', txtComando, '', SW_SHOW);
end;
De uma olhada neste artigo:
https://www.devmedia.com.br/artigo-clube-delphi-102-services-applications/11769
GOSTEI 0
Rawgleison
07/02/2014
Rapaz o problema deve ser eu então... Vou tentar mais aqui.. vlw...
GOSTEI 0
Rawgleison
07/02/2014
Alguém sabe me falar como eu fecho um tópico e coloco [Resolvido] no titulo?
GOSTEI 0
Nelson Santos
07/02/2014
Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
www.3dsistemas.com.br
GOSTEI 0
Dimas Assuncao
07/02/2014
Raul boa tarde
Cara, tive o mesmo problema que você e descobri que o problema não está no DELPHI.
Entre na tela de serviços, e no seu serviço, vá em propriedades, lá vai encontrar uma tela de logon, cadastre o login de administrador para executar o serviço.
No meu caso funcionou.
Abraço
Cara, tive o mesmo problema que você e descobri que o problema não está no DELPHI.
Entre na tela de serviços, e no seu serviço, vá em propriedades, lá vai encontrar uma tela de logon, cadastre o login de administrador para executar o serviço.
No meu caso funcionou.
Abraço
GOSTEI 0