Clipper On Line • Ver Tópico - Função para Copiar Arquivo

Função para Copiar Arquivo

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Função para Copiar Arquivo

Mensagempor asimoes » 18 Abr 2014 12:07

Função para copiar qq arquivo. Por exemplo longname que o COPY FILE não faz.

aDir1:=Directory(cPathDBF+"*.DBF")[img][/img]

cPastaBackup:="C:\BACKUP\"

FOR I:=1 TO Len(aDir1)
   CopyFile(cPathDBF+aFiles[I,1],cPastaBackup)
NEXT

FUNCTION CopyFile(cSource,cTarget)
LOCAL oFile, lOk:=.T.
   TRY
      oFile:=CreateObject("Scripting.FileSystemObject")
   CATCH
      TRY
         oFile:=CreateObject("Scripting.FileSystemObject")
      CATCH
         lOk:=.F.
      END
   END
   IF lOk
      TRY
         oFile:CopyFile(cSource, cTarget )
      END
   ENDIF
RETURN lOk
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Função para Copiar Arquivo

Mensagempor asimoes » 18 Abr 2014 12:12

Métodos do FileSystemObject

Existem outros métodos procurar por:

FileSystemObject Methods

No MSDN

Uma correção: o COPY FILE até copia arquivos longname só não copia se houver espaços entre o nome do arquivo ex. Arquivo de Programa.txt não copia --> Arquivo_de_Programa.txt assim copia.

A função CopyFile usando o objeto FileSystemObject faz a copia sem problemas.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Função para Copiar Arquivo

Mensagempor Pablo César » 18 Abr 2014 14:21

Oi Alexandre,

Em Harbour o FILE COPY funciona perfeitamente. Veja:

Function Main()
Local cFile := "Teste com espaços.txt"
Local cShortFile := Space(128)

hb_MemoWrit(cFile,"Teste")

// MsgInfo(WAPI_GETSHORTPATHNAME (cFile, @cShortFile))

Copy File(cFile) to ("c:\a\"+cFile)
Return Nil


Este código me funciona normalmente em Harbour e sem precisar em converter para Short file name. Mas observe, que o caminho e o nome de destino, tem que ser fornecidos. Talvez por isso não funcionou pra você.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Função para Copiar Arquivo

Mensagempor asimoes » 18 Abr 2014 16:46

Olá Pablo,

Funcionou, alguma coisa errada que estava fazendo em relação ao caminho dos arquivos, mas acontece outro problema e por este motivo eu abandonei o COPY FILE,

O copy file copia o arquivo e o arquivo copiado muda o atributo da data, para a data e hora atuais.

Como eu estou fazendo uma cópia do arquivo original para backup os atributos do arquivos não podem mudar, e com a função que postei, consigo isso.

[]´s
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Função para Copiar Arquivo

Mensagempor Pablo César » 18 Abr 2014 19:32

Sim Alexandre, alguma coisa que você estaria fazendo errado e deve ser com respeito ao path ou até mesmo a falta do nome do arquivo.

Mas para título de aprendizado, você pode utilizar a função FileCopy:

FILECOPY(<cSourceFile>, <cTargetFile>, [<lMode>]) --> nCopyByte

Esta sim grava com os mesmo atributos e ainda pode setar o atributo para backup.

Voltando ao Copy File() To (), você pode ainda fazer uma rotina que leia primeiramente o atributo do arquivo com:

FileAttr()
FileDate()
FileTime()

E setá-lo conforme estava se quiser e ainda mudar o atributo com:

SetFAttr()
SetFDaTi()

Mas sempre se acha um jeito ou de outro, o importante é encontrar a solução à nossa conveniência.

Eu só me intrometi, porque vi que essa informação do COPY FILE não procedia. Mas valeu pela sua outra indicação, tudo faz parte do aprendizado.

O copy file copia o arquivo e o arquivo copiado muda o atributo da data, para a data e hora atuais.
Ahhh sim, pois ele faz um cópia com data/hora atualizados, ele cria.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Função para Copiar Arquivo

Mensagempor lugab » 29 Ago 2016 22:09

Olá amigos, eu uso o Harbour 2.0 , estou com problemas no Copy File() e preciso de ajuda

Com o código abaixo o programa cria, normalmente, o arquivo Forigem na Pasta prevista,
segue executando o comando Copy File() sem acusar erros, porém o Copy File (Forigem) to (Fdestino) não copia nada

ptemp="c:\servico"
Tnumusu=123
FimdeLinha="chr(13)+chr(10)"
FOrigem=pTemp+"\Orig"+strzero(tnumusu,3)+".Txt"
Fdestino=ptemp+"\Dest"+strzero(tnumusu,3)+".Txt"

Farquivo=Fcreate(Forigem,0)   
Fwrite( Farquivo,"Teste de Copia de Arquivo"+&FimDeLinha)       
Fclose(Forigem)
Copy File (Forigem) to (Fdestino)
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Função para Copiar Arquivo

Mensagempor Toledo » 30 Ago 2016 07:34

Amigo, tente o seguinte:

Troque:
Fclose(Forigem)

Por:
Fclose(Farquivo)


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Função para Copiar Arquivo

Mensagempor JoséQuintas » 30 Ago 2016 21:48

Só comentário, aproveitando o post:
Às vezes, formatar o fonte e seguir regras, ajuda a resolver problemas.

#define CRLF  Chr(13) + Chr(10)
#define FILEORIGEM    cPath + "\orig" + StrZero( nNumUsuario, 3 ) + ".txt"
#define FILEDESTINO  cPath + "\dest" + StrZero( nNumUsuario, 3 ) + ".txt"

cPath := "c:\servico"
nNumUsuario := 123

nHandle := fCreate( FILEORIGEM, 0 )
fWrite( nHandle, "Teste de copia de arquivo " + CRLF )
fClose( nHandle )

COPY FILE ( FILEORIGEM ) TO ( FILEDESTINO )


Notas:
Não existe um certo ou errado universal, cada um vai encontrando o jeito que acha melhor pra si
O melhor resultado deste uso é compilando usando "tolerância zero", -w3 -es2, pra checagem de digitação errada principalmente no uso dos #define
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Função para Copiar Arquivo

Mensagempor lugab » 31 Ago 2016 09:51

Obrigado Toledo e Quintas...

Estou muito grato. A ajuda de vcs foi um sucesso
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Função para Copiar Arquivo

Mensagempor rochinha » 01 Set 2016 15:41

Amiguinhos,

O Harbour também tem: __CopyFile( nome de origem, nome de destino )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 31 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro