copiar arquivo existente para diretorio diferente
Moderador: Moderadores
-
coutinho-rj
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 06 Jul 2009 14:37
- Localização: rio de janeiro
copiar arquivo existente para diretorio diferente
olá a todos
mais uma vez recorro aos meus companheiros de jornada para mais uma ajuda
é o seguinte
gostaria de criar uma rotina onde eu digite um nº de matricula e o mesmo verifica se a mesma existe e faz os seguintes procedimentos.
nº mat. 5890
converto para strzero,5
fica assim 05890
onde o diretorio de destino será os dois digitos iniciais, ou seja, diretorio 05
com isso preciso mover o arquivo para um diretorio geral de matriculas, o sub-diretorio que o proprio sistema achar
ficaria assim.
copy nº mat c:\matriculas\diretorio encontrado
os parametros não estou conseguindo passar.
quando eu dou um:
run copy vmat c:\matriculas\vdir
ele diz que não existe o arquivo, ou seja, ele não encontra na hora de copiar, mais ele encontra o arquivo no teste do .not. file.
desde já agradeço a atenção.
Angelo coutinho
mais uma vez recorro aos meus companheiros de jornada para mais uma ajuda
é o seguinte
gostaria de criar uma rotina onde eu digite um nº de matricula e o mesmo verifica se a mesma existe e faz os seguintes procedimentos.
nº mat. 5890
converto para strzero,5
fica assim 05890
onde o diretorio de destino será os dois digitos iniciais, ou seja, diretorio 05
com isso preciso mover o arquivo para um diretorio geral de matriculas, o sub-diretorio que o proprio sistema achar
ficaria assim.
copy nº mat c:\matriculas\diretorio encontrado
os parametros não estou conseguindo passar.
quando eu dou um:
run copy vmat c:\matriculas\vdir
ele diz que não existe o arquivo, ou seja, ele não encontra na hora de copiar, mais ele encontra o arquivo no teste do .not. file.
desde já agradeço a atenção.
Angelo coutinho
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Armazenamento de arquivo de dados em diretorios variáveis
Angelo,
Você não mencionou exatamente qual é o propósito de copiar arquivo. Se o seu problema é copiar para depois abrir um arquivo dbf em diretório com nome variável (conforme número de matricula), fiz este exemplo abaixo que você poderá reaproveitar:Até onde eu sei, não pode abrir arquivo dbf começando com números e creio que aplica-se também para nome de diretórios. Assim que antes dos primeiros números de matrícula, você deve colocar pelo menos um caracter alfa. Note que no meu exemplo coloquei "MAT" e "MOV" antes do número da matricula.
Você não mencionou exatamente qual é o propósito de copiar arquivo. Se o seu problema é copiar para depois abrir um arquivo dbf em diretório com nome variável (conforme número de matricula), fiz este exemplo abaixo que você poderá reaproveitar:
Código: Selecionar todos
// Compilar com CT.LIB
nMat:=5890
cDIR:=DIRNAME()
cSubdir:="\MAT"+SUBSTR(STRZERO(nMat,5,0),1,2)
DIRMAKE(cDir+cSubdir) // nova linha para criar a sub-pasta
cDbf:=cDIR+cSubdir+"\MOV"+STRZERO(nMat,5,0)+".DBF"
IF !FILE(cDbf)
// utilize CREATE ou COPY FILE(), não use "RUN COPY"
ENDIF
USE (cDbf)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.
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.
Re: copiar arquivo existente para diretorio diferente
Pode-se gerar sem problemas diretórios começando por números, como também poder copiar ou iniciar arquivos .DBF iniciando por algarismos.
Nada impede que após os algarismos sejam colocadas letras, tanto no diretório como no arquivo, pois o Clipper/Dbase assume que esses nomes sempre são alfanuméricos.
Nada impede que após os algarismos sejam colocadas letras, tanto no diretório como no arquivo, pois o Clipper/Dbase assume que esses nomes sempre são alfanuméricos.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
-
coutinho-rj
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 06 Jul 2009 14:37
- Localização: rio de janeiro
Re: copiar arquivo existente para diretorio diferente
olá pablo, agradeço imensamente a sua ajuda, e gostaria de lhe pedir mais uma ajuda, pois sinceramente nunca utilizei comandos para a manipulação de arquivos, sendo assim ainda estou cheio de dúvidas, vamos lá, vou expor exatamente o que eu quero, e vc me diz se é possivel.
tenho um diretorio de trabalho onde os usuarios trabalham com varios sistemas, pois não é só um sistema, então o sistema estaria nesta pasta chamada f:\sistemas
1º passo
eu digitaria um nº de matricula
2º passo
o sistema irá verificar se existe o arquivo em 2 diretorios distintos
f:\mat-word
f:\mat-pdf
3º passo
caso exista
copy (nº mat)...aqui já estou tendo problema, pois quando eu mando copiar a mat. em forma de variavel com:
run copy (vmat) ele diz que não existe o arquivo especificado
continuando,
copy nº mat. g:\backup\mat-pdf\15\nº mat, e o quinze é a referencia decimal da mat, ou seja, o diretorio de milhar da mesma.
continuando,
copy nº mat. f:\backup\mat-digitadas\15\nº mat, e o quinze é a referencia decimal da mat, ou seja, o diretorio de milhar da mesma.
feito isso
delete nº mat. f:\mat-word\nº mat.
delete nº mat. f:\mat-pdf\nº mat.
acho que se eu conseguir fazer isso, vou otimizar meu trabalho em 60%, então agradeço a ajuda do pablo se possivel e de quem mais queira me ajudar.
tenho um diretorio de trabalho onde os usuarios trabalham com varios sistemas, pois não é só um sistema, então o sistema estaria nesta pasta chamada f:\sistemas
1º passo
eu digitaria um nº de matricula
2º passo
o sistema irá verificar se existe o arquivo em 2 diretorios distintos
f:\mat-word
f:\mat-pdf
3º passo
caso exista
copy (nº mat)...aqui já estou tendo problema, pois quando eu mando copiar a mat. em forma de variavel com:
run copy (vmat) ele diz que não existe o arquivo especificado
continuando,
copy nº mat. g:\backup\mat-pdf\15\nº mat, e o quinze é a referencia decimal da mat, ou seja, o diretorio de milhar da mesma.
continuando,
copy nº mat. f:\backup\mat-digitadas\15\nº mat, e o quinze é a referencia decimal da mat, ou seja, o diretorio de milhar da mesma.
feito isso
delete nº mat. f:\mat-word\nº mat.
delete nº mat. f:\mat-pdf\nº mat.
acho que se eu conseguir fazer isso, vou otimizar meu trabalho em 60%, então agradeço a ajuda do pablo se possivel e de quem mais queira me ajudar.
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: copiar arquivo existente para diretorio diferente
tentou com RUN COPY &vMat. ?coutinho-rj escreveu:copy (nº mat)...aqui já estou tendo problema, pois quando eu mando copiar a mat. em forma de variavel com:
run copy (vmat) ele diz que não existe o arquivo especificado
No entanto, é interessante usar a dica que o colega PABLO passou, utilizando as funções da CT.
[]'s
Ana
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Armazenamento de arquivo de dados em diretorios variáveis
Como eu disse: não tinha certeza disto. E agora posso afirmar: não tem problemas de abrir diretórios começando com "1, 2, 3..." (caracteres numéricos).Billy escreveu:Pode-se gerar sem problemas diretórios começando por números
E com respeito a abertura de dbf começando com caracteres numéricos, acabo de descobrir que é possível só que a sua abertura terá que ser feita juntamente com um novo "aliás" e necessariamente NÃO deverá começar com caracter numérico (mesmo sendo transformado em caracter). Billy, você disse isso porque você ja testou ? Ou será que eu estou enganado ?. Se eu estiver me diga onde, pois eu fiz testes e o que estou dizendo é assim aqui para mim.
Você disse que digitaria o número da matricula, só não entendo "o quê" deve ser copiado ? A matricula ? Em formato de quê ? Seria um dbf ?Angelo escreveu:vou expor exatamente o que eu quero, e vc me diz se é possivel.
Perfeitamente possível. Teria que ver se o arquivo existe nos dois diretórios ou pode se conformar em ser apenas um deles ?o sistema irá verificar se existe o arquivo em 2 diretorios distintos
Aqui você não me disse o conteúdo dessa variável vmat.caso exista
copy (nº mat)...
E você precisar copiar de onde para onde, dê exemplos.
Agora leia o seu texto, eu mudei a cor para referenciar-me e me responda as minhas questões abaixo:
copy nº mat. g:\backup\mat-pdf\15\nº mat, e o quinze é a referencia decimal da mat, ou seja, o diretorio de milhar da mesma.
Você menciona "mat.", isto seria um arquivo com extensão do número da matrícula ? Se for, é alí que está o seu erro. Pois a extensão de arquivos dentro do sistema Clipper (em forma nativa), não lê a extensão com mais de três dígitos. Ao menos que você utilize uma biblioteca que leia os nomes de arquivo de forma "longa", pois o Clipper nativamente lê em forma curta: 8x3 (oito caracteres o nome do arquivo e até três caracteres como extensão do arquivo).
Esse "15" que deveria guardar os arquivos conforme a dezena de milhar conforme o número da matricula. Bem só que para que funcione, eu esquecí de adicionar no meu código para que "crie" o diretório "15". Veja outra vez o meu código da minha mensagem anterior, veja que adicionei o DIRMAKE que serve para criar pastas.
Outra coisa muito importante, você está considerando dezena de milhar para armazenar os arquivos, isto é, de 1000 em 1000, certo ? pois bem, pelo que eu sei existe um limite do próprio sistema operacional (não lembro quanto), faça um teste você mesmo, crie 1000 arquivo num subdiretório e veja se não dá pau. Eu aconselho, você guardar de 100 em 100, então pegue mais um dígito:
Pegue 3 dígitos, neste exemplo seu: "058", entendeu ?nº mat. 5890
converto para strzero,5
fica assim 05890
onde o diretorio de destino será os dois digitos iniciais, ou seja, diretorio 05
Depois é questão de deletar o arquivo que está no diretório corrente ? Para quê seria copiar o arquivo ? Pois se esse arquivo for um dbf, poderia ser aberto no diretório de armazenagem, você não acha ?feito isso
delete nº mat. f:\mat-word\nº mat.
delete nº mat. f:\mat-pdf\nº mat.
Com certeza que dividindo o bd conforme matricula, você ganha performance, pois os dados ficam restritos conforme a matrícula. Parabéns pela sua visão. Eu ja venho fazendo isto há dezenas de anos e meu sistema é muito rápido por causa dessa estrutura. Só que você não me disse ainda qual é o conteúdo do vmat, apesar de eu ter te perguntado na minha mensagem anterior. E se quiser que te ajude de forma mais abrangente, observe e responda todas as minhas perguntas aqui nesta mensagem.acho que se eu conseguir fazer isso, vou otimizar meu trabalho em 60%
Pois é Ana, essa idéia é muito boa para quem quer ganhar performance e ordenar separadamente os dados, mas utilizo funções da CT.LIBinteressante usar a dica que o colega PABLO passou, utilizando as funções da CT
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.
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.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: copiar arquivo existente para diretorio diferente
coutinho-rj escreveu:copy (nº mat)...aqui já estou tendo problema, pois quando eu mando copiar a mat. em forma de variavel com:
run copy (vmat) ele diz que não existe o arquivo especificado
Amigo, como a Ana sugeriu você terá que criar uma macro para executar a copia do arquivo.anacatacombs escreveu:tentou com RUN COPY &vMat. ?
Veja um exemplo:
Código: Selecionar todos
vmat:="05890"
vdir:=LEFT(vmat,2)
cMacro:="Copy "+vmat+" c:\matriculas\"+vdir
Run &cMacro.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
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
Re: copiar arquivo existente para diretorio diferente
Ao Pablo Cesar:
Os testes que fiz tanto na criação de diretórios e arquivos como na utilização de arquivos .DBF que começam por algarismos não deram problemas.
A criação do diretório foi feita no DOS com o comando MD (Make directory).
Já a criação do arquivo foi feita usando o comando copy.
A utilização de .DBF que inicia-se por algarismos foi feita usando o DBase III e não apresentou nenhum erro.
Os testes que fiz tanto na criação de diretórios e arquivos como na utilização de arquivos .DBF que começam por algarismos não deram problemas.
A criação do diretório foi feita no DOS com o comando MD (Make directory).
Já a criação do arquivo foi feita usando o comando copy.
A utilização de .DBF que inicia-se por algarismos foi feita usando o DBase III e não apresentou nenhum erro.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
copiar arquivo existente para diretorio diferente
DBase III ? Experimente em Clipper, abra o arquivo. Vai dar erro de Alias como disse anteriomente.A utilização de .DBF que inicia-se por algarismos foi feita usando o DBase III e não apresentou nenhum erro.
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.
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.
Re: copiar arquivo existente para diretorio diferente
Ao Pablo Cesar:
Realmente, se não for usado um "alias" para o .DBF a ser aberto com o comando USE ocorrerá o seguinte erro em execução:
"DBCMD/1010 Illegal characters in alias"
Como em todas as aberturas de arquivos eu sempre utilizo "alias", eu nunca teria tal erro.
Valeu, Mestre !
Realmente, se não for usado um "alias" para o .DBF a ser aberto com o comando USE ocorrerá o seguinte erro em execução:
"DBCMD/1010 Illegal characters in alias"
Como em todas as aberturas de arquivos eu sempre utilizo "alias", eu nunca teria tal erro.
Valeu, Mestre !
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
-
coutinho-rj
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 06 Jul 2009 14:37
- Localização: rio de janeiro
Re: copiar arquivo existente para diretorio diferente
olá gente agradeço a todos a ajuda, realmente vcs fizeram com que eu reduzisse o trabalho de um funcionario em 60%, sinceramente fico feliz e grato de poder contar com as vossas ajudas.
em especial ao pablo cesar que responde prontamente as nossas dúvidas.
um feliz natal a todos.
só para vcs entederem, mais ou menos, resolvi utilizando as macros que o toledo citou, ficou simples, e como é um sistema só para execução dessa rotina nem me preoculpei com o tamanho do sistema, já testei está tudo ok.
)
em especial ao pablo cesar que responde prontamente as nossas dúvidas.
um feliz natal a todos.
só para vcs entederem, mais ou menos, resolvi utilizando as macros que o toledo citou, ficou simples, e como é um sistema só para execução dessa rotina nem me preoculpei com o tamanho do sistema, já testei está tudo ok.
