Executar este comando no DOS.....

06/03/2006

Olá gostaria da ajuda para este problema...tenho executar este comando no meu sistema so que o comando COPY e do DOS...tipo assim :

COPY SFP00.TXT+SFP10.TXT+SFP30.TXT+SFP32.TXT+SFP90.TXT A:\SEFIP.RE

legal...

abraço.

fabio


Cavalcanti.fabio

Respostas

06/03/2006

Adriano Santos

Declare a unit ShellApi no uses.

procedure TForm1.Button1Click(Sender: TObject);
var
  Dados: TSHFileOpStruct;
  I : Integer;
  PastaOrigem : String;
  PastaDestino : String;
begin
  with Dados do
  begin
    for I := 0 to ListBox1.Items.Count-1 do
    begin
      wFunc := FO_COPY;
      PastaOrigem := ´C:\´;
      PastaDestino := ´C:\Temp\´;
      pFrom := PChar(PastaOrigem + ListBox1.Items[I&93;);
      pTo := PChar(PastaDestino + ListBox1.Items&91;I&93;);
      fFlags := FOF_ALLOWUNDO or FOF_FILESONLY or FOF_RENAMEONCOLLISION or FOF_NOCONFIRMATION;
      SHFileOperation(Dados);
    end;
  end;
end;



Responder Citar

06/03/2006

Massuda

Tem duas formas de fazer isso... você pode usar ShellExecute e pedir para o Windows executar o COPY ou implementar tudo em Delphi.

Para fazer em Delphi, use dois TStringList, use um para conter o resultado (concatenação dos arquivos) e outro para ler cada arquivo (use .LoadFromFile); use .AddStrings para somar o conteúdo de cada arquivo no resultado e finalmente salve o resultado (use .SaveToFile).


Responder Citar

06/03/2006

Adriano Santos

Tem duas formas de fazer isso... você pode usar ShellExecute e pedir para o Windows executar o COPY ou implementar tudo em Delphi. Para fazer em Delphi, use dois TStringList, use um para conter o resultado (concatenação dos arquivos) e outro para ler cada arquivo (use .LoadFromFile); use .AddStrings para somar o conteúdo de cada arquivo no resultado e finalmente salve o resultado (use .SaveToFile).


Não sei o que deseja fazer, mas dependendo do que for a dica do Massuda ainda está mais simples do que a minha. A minha usa o Shell como pode notar.


Responder Citar

06/03/2006

Cavalcanti.fabio

Massuda...legal esta sua ideia...desculpe a minha besteira em perguntar...mas vc poderia ser mais claro...os arquivos de origem são os proprios TXT e o de destino sera em A: com o nome de SEFIP.RE

valeu...


Responder Citar

06/03/2006

Cavalcanti.fabio

estou usando este comando :

WinExec(PChar(´command.com /c COPY ´+diretoriogeral+´SFP00.TXT+SFP10.TXT+SFP30.TXT+SFP32.TXT+SFP90.TXT A:\SEFIP.RE´),SW_SHOWNORMAL);

mas so esta copiando o SFPA00.TXT

o que podera estar acontecendo...


Responder Citar

06/03/2006

Cavalcanti.fabio

continuando...onde diretoriogeral e : o:\sistemas\sfpa\

complementando


Responder Citar

06/03/2006

Massuda

Você tem que incluir o caminho (o:\sistemas\sfpa) no nome de cada arquivo da lista (SFPxx.TXT), senão o Windows vai procurar no diretório que seu programa está usando.


Responder Citar

06/03/2006

Cavalcanti.fabio

Massuda.

WinExec(PChar(´command.com /c COPY ´+diretoriogeral+´SFP00.TXT+SFP10.TXT+SFP30.TXT+SFP32.TXT+SFP90.TXT A:\SEFIP.RE´),SW_SHOWNORMAL);

apos o COPY tem uma variavel diretoriogeral onde esta setado para O:\SISTEMAS\SFPA e apos a variavel esta todos os TXT´s que desejo in cluir dentro de SEFIP.RE que sera gravado em A:\

era esta a sua informação anterior...ou não estou entendendo...

valeu.


Responder Citar

06/03/2006

Massuda

O que eu quis dizer é que todos os SFPxx na linha de comando tem que ter o caminho especificado...
WinExec(PChar(´command.com /c COPY ´+diretoriogeral+´SFP00.TXT+´+diretoriogeral+´SFP10.TXT+´+diretoriogeral+´SFP30.TXT+´+diretoriogeral+´SFP32.TXT+´+diretoriogeral+´SFP90.TXT A:\SEFIP.RE´),SW_SHOWNORMAL);
...senão o Windows não sabe onde procurar cada um dos arquivos.


Responder Citar

06/03/2006

Cavalcanti.fabio

Massuda...resolvi utilizando o seguinte comando :

ShellExecute(0,nil, PChar(DirectoryListBox.Directory+´\SFPCopy2.bat´),´´,nil,Sw_shownormal);

onde os arquivos TXT (nomes) estão agora em um .BAT e e executado pelo shell...perfeito...funcionou que foi uma beleza...fez a junção como eu queria dos arquivos...

valeu.

grato,

fabio


Responder Citar