Array
(
)

Executar este comando no DOS.....

Cavalcanti.fabio
   - 06 mar 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


Adriano Santos
   - 06 mar 2006

Declare a unit ShellApi no uses.

#Código


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]);
pTo := PChar(PastaDestino + ListBox1.Items[I]);
fFlags := FOF_ALLOWUNDO or FOF_FILESONLY or FOF_RENAMEONCOLLISION or FOF_NOCONFIRMATION;
SHFileOperation(Dados);
end;
end;
end;



Massuda
   - 06 mar 2006

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


Adriano Santos
   - 06 mar 2006


Citação:
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.


Cavalcanti.fabio
   - 06 mar 2006

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


Cavalcanti.fabio
   - 06 mar 2006

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


Cavalcanti.fabio
   - 06 mar 2006

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

complementando


Massuda
   - 06 mar 2006

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.


Cavalcanti.fabio
   - 06 mar 2006

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.


Massuda
   - 06 mar 2006

O que eu quis dizer é que todos os SFPxx na linha de comando tem que ter o caminho especificado...#Código

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.


Cavalcanti.fabio
   - 06 mar 2006

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