Como copiar arquivos do Basic sem usar a declaração do SHELL

Traduções deste artigo Traduções deste artigo
ID do artigo: 77876 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Básico não tem nenhuma instrução para copiar arquivos de um diretório, unidade ou nome de arquivo para outro. Um método de copiar arquivos é SHELLing para MS-DOS e usando o comando COPY. Você também pode abrir arquivos para acesso BINARY e o byte de um arquivo de entrada por vez e enviá-lo para outro arquivo. Isso essencialmente é o mesmo que o comando COPY do MS-DOS.

Observe que a declaração de nome será renomear um arquivo (ou um diretório), ou se dado um caminho diferente para o segundo argumento, será movido um arquivo para o novo destino (excluindo a cópia do arquivo de destino antigo). Um exemplo é ainda mais abaixo.

Mais Informações

Outros métodos, como interrupções do MS-DOS, podem ser usados para entrada blocos maiores de arquivo por vez. No entanto, tentando duplicar COPY do MS-DOS com interrupções do MS-DOS é mais complicado do que o programa abaixo.

O programa abaixo usa a instrução INPUT para inserir o nome do arquivo para copiar e o nome do arquivo de saída. A variável "bigchunk" pode ser alterada para ajustar o seu aplicativo e pode ser até 32 K bytes de tamanho.

Exemplo de cópia de arquivo

DECLARE SUB getbigchunk ()
DECLARE SUB getrest ()
INPUT "Enter original filename : ", name1$
INPUT "Enter filename to copy to : ", name2$
OPEN name1$ FOR BINARY AS #1     ' Open copied from file
OPEN name2$ FOR BINARY AS #2     ' Open copied to file
DIM SHARED onebyte AS STRING * 1
DIM SHARED bigchunk AS STRING * 10000   ' Can be up to 32768 bytes
IF LOF(1) > 10000 THEN      ' To speed up process, get data in chunks
  CALL getbigchunk
END IF
CALL getrest
END

SUB getbigchunk
chunk = LOF(1) \ 10000
FOR i = 0 TO chunk - 1
  GET #1, (i * 10000) + 1, bigchunk
  PUT #2, (i * 10000) + 1, bigchunk
NEXT
END SUB

SUB getrest
IF LOF(1) > 10000 THEN
   startpoint= LOF(1)-(LOF(1) MOD 10000) + 1
ELSE
   startpoint = 1
END IF
FOR i = startpoint TO LOF(1)
  GET #1, i, onebyte               ' Input byte
  PUT #2, i, onebyte               ' Output byte
NEXT
END SUB
				

Exemplo de movimentação de arquivo

A instrução básica NAME pode mover um arquivo de um diretório para outro no mesmo disco. (Além disso, a instrução NAME pode renomear um diretório, mas não é possível mover um diretório.) A instrução nome dará o erro "RENAME em DISKS" ao tentar mover um arquivo de uma unidade para outro (como de C:\ para D:\). Para obter mais informações sobre nome, consulte a página 217 no manual do "Microsoft Basic 7.0 Language Reference" fornecido com o Microsoft Basic PDS versões 7.0 e 7.1.

No exemplo a seguir, a instrução nome move MYNAME.DAT de C:\TEST para C:\NEWTEST:
Source$ = "C:\TEST\MYNAME.DAT"
Dest$ = "C:\NEWTEST\MYNAME.DAT"
NAME Source$ AS Dest$
				

Propriedades

ID do artigo: 77876 - Última revisão: terça-feira, 16 de agosto de 2005 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft BASIC Professional Development System 7.0
  • Microsoft BASIC Professional Development System 7.1
  • Microsoft BASIC Compiler 6.0
  • Microsoft BASIC Compiler 6.0b
  • Microsoft QuickBasic 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBasic 4.5 for MS-DOS
Palavras-chave: 
kbmt KB77876 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 77876
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com