Página 1 de 1
Função para Copiar Arquivo
Enviado: 18 Abr 2014 12:07
por asimoes
Função para copiar qq arquivo. Por exemplo longname que o COPY FILE não faz.
Código: Selecionar todos
aDir1:=Directory(cPathDBF+"*.DBF")[img][/img]
cPastaBackup:="C:\BACKUP\"
FOR I:=1 TO Len(aDir1)
CopyFile(cPathDBF+aFiles[I,1],cPastaBackup)
NEXT
Código: Selecionar todos
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
Função para Copiar Arquivo
Enviado: 18 Abr 2014 12:12
por asimoes
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.
Função para Copiar Arquivo
Enviado: 18 Abr 2014 14:21
por Pablo César
Oi Alexandre,
Em Harbour o FILE COPY funciona perfeitamente. Veja:
Código: Selecionar todos
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ê.
Função para Copiar Arquivo
Enviado: 18 Abr 2014 16:46
por asimoes
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
Função para Copiar Arquivo
Enviado: 18 Abr 2014 19:32
por Pablo César
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.
Função para Copiar Arquivo
Enviado: 29 Ago 2016 22:09
por lugab
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
Código: Selecionar todos
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)
Função para Copiar Arquivo
Enviado: 30 Ago 2016 07:34
por Toledo
Amigo, tente o seguinte:
Troque:
Por:
Abraços,
Função para Copiar Arquivo
Enviado: 30 Ago 2016 21:48
por JoséQuintas
Só comentário, aproveitando o post:
Às vezes, formatar o fonte e seguir regras, ajuda a resolver problemas.
Código: Selecionar todos
#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
Função para Copiar Arquivo
Enviado: 31 Ago 2016 09:51
por lugab
Obrigado Toledo e Quintas...
Estou muito grato. A ajuda de vcs foi um sucesso
Função para Copiar Arquivo
Enviado: 01 Set 2016 15:41
por rochinha
Amiguinhos,
O Harbour também tem: __CopyFile( nome de origem, nome de destino )