copy / a, copy / b - uso dessas opções

2

Na Microsoft do Windows Server 2008 (R1), de 32 bits, tenho alguns problemas para entender o uso de , bem como a diferença entre

copy /a e copy /b

O Artigo de Technet sobre copy não me ajuda muito:

copy /a → … copy an ASCII text file that uses an end-of-file character (that is, CTRL+Z) to indicate the end of the file. … The effect of /a depends on its position in the command-line string. When /a follows Source, copy treats the file as an ASCII file and copies data that precedes the first end-of-file character.

copy /b directs the command interpreter to read the number of bytes specified by the file size in the directory. /b is the default value for copy, unless copy combines files. … The effect of /b depends on its position in the commandline string. When /b follows Source, copy copies the entire file, including any end-of-file character. → source

Isso é bastante confuso para mim , porque achei que copy simplesmente clona um arquivo para outro destino.

Pergunta: Um exemplo real em que copy /a e⁄or copy /b faria diferença ajudaria muito na compreensão da diferença.

    
por erch 19.06.2014 / 15:41

2 respostas

1

Não. Copiar é uma função executável do gravador. Eu acho que é um comportamento de hereditariedade do MS-DOS. Por exemplo, você poderia escrever seu próprio arquivo sem usar nenhum editor como EDIT. Por exemplo, para criar um arquivo:

copy:con myfile.txt
Hello world!
This is other line
^Z

No exemplo acima, ^ Z é o sinal para "CONTROL + Z" que significa: "END OF FILE".

Agora, para sua pergunta, quando você usa a primeira declaração, você quer dizer algo assim. Você está no modo de cópia e anexação "ASCII". A segunda versão é uma versão "BINARY", bem conhecida por todos.

Se a minha resposta parece um pouco sombria, por favor, comente e terei prazer em atualizá-la:)

    
por 21.10.2014 / 16:30
1

Eu simplesmente evitaria o COPY / A

O que eu esperaria que fosse copiar informações até o primeiro caractere EOF (Ctrl-Z) e depois truncar o arquivo depois disso. Então, se você tivesse um arquivo que dizia "HELLO ^ M ^ ZGREETINGS", então o resultado seria simplesmente "HELLO ^ M".

Ele também pode fazer algumas coisas interessantes com arquivos de texto Unix, como convertê-los para o formato MS-DOS ASCII. Essas coisas foram consideradas benéficas nos primeiros dias do DOS, quando as pessoas eram mais propensas a traduzir arquivos de texto para o formato nativo de seu próprio sistema operacional. Isso provavelmente foi visto como um recurso que realmente ajudou a melhorar a compatibilidade.

Estas podem ser coisas altamente desejáveis, em teoria. Mas provavelmente não na maioria dos casos. Na maioria dos casos, você quer uma cópia exata dos bits do arquivo original. Então Copiar / B é desejado. Copiar / B também é geralmente o padrão. (É o padrão para arquivos; pode não ser o padrão se você não especificar um arquivo como a origem.)

Por exemplo, com pelo menos alguma versão do DOS, usei o Copy / B da seguinte forma:

Copiar / B config1.txt + config2.txt config3.txt

Acredito que sem o / B, a especificação de vários nomes de arquivos poderia resultar na origem sendo tratada como uma fonte não-binária. No entanto, parece que me lembro mais tarde que o comportamento preciso pode variar com base no shell de comando que estou usando. Isso poderia significar diferentes versões do sistema operacional, ou talvez usando um shell como o 4DOS da JP Software, que eu sou conhecido por usar regularmente.

O mesmo tipo de coisa, a propósito, como a capacidade do FTP de transferir arquivos no modo ASCII ou no modo binário. Talvez útil em teoria, mas provavelmente causa mais confusão do que ajuda. Isso é ainda mais verdadeiro com o COPY / A do CMD do que com o FTP.

    
por 06.01.2015 / 03:41