GARANTIR DESCONTO

Fórum Copiar arquivos da rede com Serviço do Windows #469187

07/02/2014

0

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:

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

Rawgleison

Responder

Posts

07/02/2014

Luiz

Não entendi pq você não usa o 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;
Responder

Gostei + 0

07/02/2014

Rawgleison

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...
Responder

Gostei + 0

07/02/2014

Luiz

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,

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
Responder

Gostei + 0

07/02/2014

Rawgleison

Rapaz o problema deve ser eu então... Vou tentar mais aqui.. vlw...
Responder

Gostei + 0

25/03/2014

Rawgleison

Alguém sabe me falar como eu fecho um tópico e coloco [Resolvido] no titulo?
Responder

Gostei + 0

27/05/2014

Nelson Santos

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
Responder

Gostei + 0

01/08/2017

Dimas Assuncao

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar