Página 2 de 3
Enviado: 19 Jul 2007 06:20
por Pablo César
Hasse escreveu:Eu gravo o arquivo com 8 caracteres, e depois, com o comando RUN RENAME posso mudá-lo para qualquer tamanho.
Tem certeza, colega ?. Você poderias dar-nos um exemplo ? Pois eu não conseguí fazer isto:
Código: Selecionar todos
VRUN:="RENAME TESTE.TXT "+CHR(34)+"Teste de nome de arquivo longo.TXT"+CHR(34)
RUN &VRUN
Considerando que o SO precisa de ASPAS para englobar a frase como nome de arquivo-longo. Simplesmente ocorreu o seguinte erro:
Formato de parâmetro incorreto - "Teste
Enviado: 19 Jul 2007 10:28
por Maligno
Se tiver uma forma de renomear arquivos para nomes longos através do RUN, desconheço. Mas ainda que tivesse, acho mais prático e funcional usar a LFN do que invocar o shell do DOS só pra renomear um arquivo.
Enviado: 19 Jul 2007 10:32
por Pablo César
Pois é, eu também acho o mesmo. Mas que o colega Hasse disse que seria possível e eu não conseguí, estou curioso saber como ele fez. Na linha de comando funciona (isso já sabíamos). O jeito espera a resposta dele pra saber.
Enviado: 19 Jul 2007 17:12
por Toledo
Utilizando o comando RENAME com o Windows XP não é possível, mas no Windows 95/98 isto vai dar certo se você não deixar espaços em branco no meio do nome do arquivo.
Código: Selecionar todos
vrun:="RENAME teste.txt arquivo_com_nome_longo.txt"
RUN &vrun.
Obs.: também dá para usar o comando COPY.
Abraços,
Enviado: 19 Jul 2007 17:19
por Maligno
Então, é como eu disse antes: melhor usar a LFN que já contém tudo o que é necessário pra esse tipo de operação.
Enviado: 19 Jul 2007 19:59
por Hasse
Copiei direto da minha rotina, e funciona no Win98, 2000, NT e XP.
Renomeia tanto no HD quanto no diskete 3,5".
arqfat, neste caso é: 0004006202.u04 (10 caracteres, sem contar com a extensão).
Código: Selecionar todos
Msg("Copiando arquivo N§ " + SUBS(c_arqfat,9,2) +;
" => " + c_arquni)
COPY FILE &c_arqtmp TO &c_arquni && Nome curto.
INKEY(1)
Msg("Renomeando arquivo N§ " + SUBS(c_arqfat,9,2) +;
" para ==> \UNIMED\" + c_arqfat)
! RENAME &c_arquni &c_arqfat && Nome longo.
BEEP(2)
Msgf("Digite qualquer tecla para continuar")
Msg("GRAVADO com ˆxito o arquivo N§ " + SUBS(c_arqfat,9,2) +;
" => " + c_arqfat)
INKEY(0)
EXIT
Um detalhe, não deve haver espaços entre as partes do nome, tipo: "nome muito longo.txt". Deve ser assim: "NomeMuitoLongo".
Abraços.
Enviado: 19 Jul 2007 20:42
por Maligno
Por curiosidade testei sua rotina. No meu XP_PRO/SP2 não funcionou. Sempre trunca o nome para o padrão 8x3.
Enviado: 19 Jul 2007 21:54
por Hasse
Perdão colega Maligno.
Alterei o meu post anterior e não havia percebido que você já havia postado novo comentário.
Então:
O nome não deve ter espeços em branco, tipo: "Nome muito longo.txt" Deve ser assim: "NomeMuitoLongo.txt"
Testei neste instante: "nomemuitolongo123456789123456789.txt" e funcionou perfeito.
Abraços.
Enviado: 20 Jul 2007 04:37
por Maligno
Continua não funcionando. Meu código de teste:
Código: Selecionar todos
c_arquni := "teste.txt"
c_arqfat := "nomemuitolongo123456789123456789.txt"
! RENAME &c_arquni &c_arqfat
quit
Enviado: 20 Jul 2007 08:11
por Pablo César
Nos meus testes não ocorre erro com o seu exemplo, está executando mas não como se espera. O arquivo é renomeado para NOMEMUIT.TXT. No entanto se intentar executar novamente dá o erro estendido 183, porque já existe o arquivo NOMEMUIT.TXT, daí o rename não funciona evidentemente (assim como no OS). Então o jeito é deletar o arquivo (se existir) antes de renomear.
Código: Selecionar todos
c_arquni := "teste.txt"
c_arqfat := "nomemuitolongo123456789123456789.txt"
* IF FILE(c_arqfat) // assim nao funciona tambem
IF FILE(SUBSTR(c_arqfat,1,8)+RIGHT(c_arqfat,4))
ALERT("Existe este arquivo, deseja delet -lo ?")
DELETE FILE(SUBSTR(c_arqfat,1,8)+RIGHT(c_arqfat,4))
ENDIF
! RENAME &c_arquni &c_arqfat
quit
De todas as formas, ainda duvido na possibilidade de dar certo com RENAME e com COPY pelo Clipper.
Enviado: 20 Jul 2007 08:23
por Maligno
Seu teste resultou como o meu: não renomeia nome curto para nome longo. Ele trunca para 8x3. Se tentar renomear de novo, é claro que vai dar erro.

Enviado: 20 Jul 2007 08:33
por Hasse
Isto realmente é muito estranho.
Agora, mais uma vez depedemos dos Mestres para desvendar este mistério.....
Certamente é alguma configuração, mas qual ?
Enviado: 20 Jul 2007 08:37
por Maligno
Para podermos comparar, qual a configuração da sua máquina?
Enviado: 20 Jul 2007 08:50
por Pablo César
Eu acho que não é questão de configuração e sim da versão do Windows. Como ja disse o Toledo, funciona sem espaços mas em WIN98 em XP não. Eu fiz o teste e funcionou em WIN98 mas em Xp não. E eu acho que no seu caso Maligno, não estaria funcionando ora porque você estaria emulando o WIN98. De todas formas eu acho que esta opção não é segura, então não serve !
Enviado: 20 Jul 2007 08:55
por Maligno
Pablo César escreveu:E eu acho que no seu caso Maligno, não estaria funcionando ora porque você estaria emulando o WIN98.
Eu não tinha testado no Win98. Só no XP, que não funcionou. Mas por que você comentou, fui testar no Win98 emulado. Funcionou certinho. O emulado, como já havia comentado, tem um comportamento igual ao real.
De todas formas eu acho que esta opção não é segura, então não serve !
Sem sombra de dúvida. Só por curiosidade mesmo.
