xcopy

Copia arquivos e diretórios, incluindo subdiretórios.

Para obter exemplos de como usar esse comando, consulte Exemplos.

Sintaxe

Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

Parâmetros

Parâmetro Descrição
<Origem> Obrigatórios. Especifica o local e os nomes dos arquivos que você quer copiar. Esse parâmetro deve incluir uma unidade ou um caminho.
[<Destination>] Especifica o destino dos arquivos que você deseja copiar. Esse parâmetro pode incluir uma letra da unidade e dois-pontos, um nome de diretório, um nome de arquivo ou uma combinação deles.
/w Exibe a seguinte mensagem e aguarda sua resposta antes de começar a copiar arquivos:
Pressione qualquer tecla para começar a copiar os arquivos
/p Solicita que você confirme se deseja criar cada arquivo de destino.
/c Ignora erros.
/v Verifica cada arquivo conforme é gravado no destino para assegurar que os arquivos de destino sejam exatamente iguais aos arquivos de origem.
/q Suprime a exibição de mensagens xcopy.
/f Exibe nomes do arquivo de origem e de destino durante a cópia.
/l Gera uma lista de arquivos que devem ser copiados, mas não os copia ativamente.
/g Cria arquivos de destino descriptografados quando o destino não dá suporte à criptografia.
/d [:MM-DD-YYYY] Copia apenas os arquivos de origem alterados a partir da data especificada. Se você não incluir um valor MM-DD-YYYY, xcopy copiará todos os arquivos de origem mais recentes do que os arquivos de destino existentes. Essa opção de linha de comando permite atualizar arquivos que foram alterados.
/u Copia arquivos da origem que existem somente no destino.
/i Se a origem for um diretório ou contiver curingas e o destino não existir, xcopy vai considerar que o destino especifica um nome de diretório e criará um diretório. Em seguida, xcopy copia todos os arquivos especificados para o novo diretório. Por padrão, xcopy solicita que você especifique se o destino é um arquivo ou um diretório.
/s Copia diretórios e subdiretórios, a menos que estejam vazios. Se você omitir /s, xcopy funcionará em um único diretório.
/e Copia todos os subdiretórios, mesmo que estejam vazios. Use /e com as opções de linha de comando /s e /t.
/t Copia apenas a estrutura do subdiretório (ou seja, a árvore), mas não os arquivos. Para copiar diretórios vazios, você deve incluir a opção de linha de comando /e.
/k Copia arquivos e retém o atributo somente leitura nos arquivos de destino se estiver presente nos arquivos de origem. Por padrão, xcopy remove o atributo somente leitura.
/r Copia arquivos somente leitura.
/h Copia arquivos com atributos de arquivos ocultos e do sistema. Por padrão, xcopy não copia arquivos ocultos ou do sistema
/a Copia somente arquivos de origem que têm seus atributos de arquivo morto definidos. /a não modifica o atributo de arquivo morto do arquivo de origem. Para obter informações sobre como definir o atributo de arquivo morto usando attrib, consulte os Links relacionados.
/m Copia arquivos de origem que têm seus atributos de arquivo morto definidos. Ao contrário de /a, /m desativa os atributos de arquivo morto nos arquivos especificados na origem. Para obter informações sobre como definir o atributo de arquivo morto usando attrib, consulte os Links relacionados.
/n Cria cópias usando os nomes curtos de arquivos ou diretórios do NTFS. /n é necessário quando você copia arquivos ou diretórios de um volume NTFS para um volume FAT ou quando a convenção de nomenclatura do sistema de arquivos FAT (ou seja, 8,3 caracteres) é necessária no sistema de arquivos de destino. O sistema de arquivos de destino pode ser FAT ou NTFS.
/o Copia a propriedade do arquivo e as informações da DACL (lista de controle de acesso discricionário).
/x Copia as configurações de auditoria de arquivo e as informações da SACL (lista de controle de acesso do sistema) (implica /o).
/exclude:NomeDoArquivo1[+[NomeDoArquivo2]][+[NomeDoArquivo3]( )] Especifica uma lista de arquivos. É necessário especificar pelo menos um arquivo. Cada arquivo incluirá cadeias de caracteres de pesquisa, cada uma em uma linha separada. Quando qualquer um dos caracteres da cadeia coincidir com qualquer parte do caminho absoluto do arquivo a ser copiado, esse arquivo será excluído da cópia. Por exemplo, especificar a cadeia de caracteres obj excluirá todos os arquivos sob o diretório obj ou todos os arquivos com a extensão .obj.
/y Suprime a solicitação para confirmar que você deseja substituir um arquivo de destino existente.
/-y Solicita que você confirme que deseja substituir um arquivo de destino existente.
/z Copia em uma rede no modo reinicializável.
/b Copia o link simbólico em vez dos arquivos. Este parâmetro foi introduzido no Windows Vista®.
/j Copia arquivos sem armazenamento em buffer. Recomendado para arquivos muito grandes. Este parâmetro foi adicionado no Windows Server 2008 R2.
/compress Solicita a compactação de rede durante a transferência de arquivos, quando aplicável.
/? Exibe a ajuda no prompt de comando.
/sparse Habilita a retenção do estado esparso dos arquivos durante a cópia.

Comentários

  • Usando /z

    Se você perder sua conexão durante a fase de cópia (por exemplo, se o servidor desconectar e cortar a conexão), ela será retomada após você reestabelecer a conexão. /z também exibe o percentual da operação de cópia concluída para cada arquivo.

  • Usando /y na variável de ambiente COPYCMD.

    Você pode usar /y na variável de ambiente COPYCMD. Você pode substituir esse comando usando /-y na linha de comando. Por padrão, você será solicitado a substituí-lo.

  • Copiar arquivos criptografados

    Copiar arquivos criptografados para um volume que não dá suporte ao EFS resulta em um erro. Descriptografe os arquivos primeiro ou copie os arquivos para um volume que dê suporte ao EFS.

  • Anexar arquivos

    Para anexar arquivos, especifique um único arquivo para o destino, mas vários arquivos para a origem (ou seja, usando curingas ou formato arquivo1+arquivo2+arquivo3).

  • Valor padrão para o destino

    Se você omitir o destino, o comando xcopy copiará os arquivos para o diretório atual.

  • Especificar se o destino é um arquivo ou diretório

    Se o destino não contiver um diretório existente e não terminar com uma barra invertida (\), a seguinte mensagem será exibida:

    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
    

    Pressione F se quiser que o arquivo ou os arquivos sejam copiados para um arquivo. Pressione D se quiser que o arquivo ou os arquivos sejam copiados para um diretório.

    Você pode suprimir essa mensagem usando a opção de linha de comando /i, o que faz com que xcopy assuma que o destino seja um diretório se a origem for mais de um arquivo ou um diretório.

  • Usar o comando xcopy para definir o atributo de arquivo morto para arquivos de destino

    O comando xcopy cria arquivos com o conjunto de atributos de arquivo morto, independentemente de esse atributo ter sido definido ou não no arquivo de origem. Para obter mais informações sobre atributos de arquivo e attrib, consulte os Links relacionados.

  • Comparação entre xcopy e diskcopy

    Se você tiver um disco que contenha arquivos em subdiretórios e quiser copiá-lo para um disco que tenha um formato diferente, use o comando xcopy em vez de diskcopy. Como o comando diskcopy copia os discos faixa por faixa, os discos de origem e de destino devem ter o mesmo formato. O comando xcopy não tem esse requisito. Use xcopy a menos que você precise de uma cópia completa da imagem de disco.

  • Erro de memória insuficiente

    O erro “Memória insuficiente” poderá ocorrer se xcopy estiver sendo executado para copiar um arquivo ou uma pasta cujo caminho do nome de arquivo é maior que 255 caracteres.

  • Sair de códigos para xcopy

    Para processar códigos de saída retornados por xcopy, use o parâmetro ErrorLevel na linha de comando if em um programa em lotes. Para obter um exemplo de um programa em lotes que processa códigos de saída usando if, consulte os Links relacionados. A tabela a seguir lista cada código de saída e uma descrição.

    Código de saída Descrição
    0 Os arquivos foram copiados sem erro.
    1 Nenhum arquivo encontrado para copiar.
    2 O usuário pressionou CTRL+C para encerrar xcopy.
    4 Ocorreu um erro de inicialização. Não há memória ou espaço em disco suficiente ou você inseriu um nome de unidade inválido ou uma sintaxe inválida na linha de comando.
    5 Erro de gravação de disco.

Exemplos

1. Para copiar todos os arquivos e subdiretórios (incluindo quaisquer subdiretórios vazios) da unidade A para a unidade B, digite:

xcopy a: b: /s /e

2. Para incluir qualquer sistema ou arquivos ocultos no exemplo anterior, adicione a opção de linha de comando /h da seguinte maneira:

xcopy a: b: /s /e /h

3. Para atualizar arquivos no diretório \Reports com os arquivos no diretório \Rawdata que foram alterados desde 29 de dezembro de 1993, digite:

xcopy \rawdata \reports /d:12-29-1993

4. Para atualizar todos os arquivos que existem em \Reports no exemplo anterior, independentemente da data, digite:

xcopy \rawdata \reports /u

5. Para obter uma lista dos arquivos a serem copiados pelo comando anterior (ou seja, sem realmente copiar os arquivos), digite:

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

O arquivo xcopy.out lista todos os arquivos que devem ser copiados.

6. Para copiar o diretório \Customer e todos os subdiretórios para o diretório \\Public\Address na unidade de rede H:, mantenha o atributo somente leitura e ser solicitado quando um novo arquivo for criado em H:, digite:

xcopy \customer h:\public\address /s /e /k /p

7. Para emitir o comando anterior, certifique-se de que xcopy crie o diretório \Address se ele não existir e suprima a mensagem exibida ao criar um novo diretório, adicione a opção de linha de comando /i da seguinte maneira:

xcopy \customer h:\public\address /s /e /k /p /i

8. Você pode criar um programa em lotes para executar operações xcopy e usar o comando de lote if para processar o código de saída se ocorrer um erro. Por exemplo, o seguinte programa em lotes usa parâmetros substituíveis para os parâmetros de origem e destino xcopy:

@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

Para usar o programa em lotes anterior para copiar todos os arquivos no diretório C:\Prgmcode e seus subdiretórios para a unidade B, digite:

copyit c:\prgmcode b:

O interpretador de comando substitui C:\Prgmcode por %1 e B: para %2 e usa xcopy com as opções de linha de comando /e e /s. Se xcopy encontrar um erro, o programa em lotes lerá o código de saída e irá para o rótulo indicado na instrução IF ERRORLEVEL apropriada e exibirá a mensagem apropriada e sairá do programa em lotes.

9. Este exemplo copia todos os diretórios não vazios, além de arquivos com a extensão de arquivo associada após o símbolo de asterisco.

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

No exemplo anterior, esse valor de parâmetro de origem específico .\toc*.yml copia os mesmos 3 arquivos, mesmo que seus dois caracteres de caminho .\ tenham sido removidos. No entanto, nenhum arquivo seria copiado se o curinga do asterisco fosse removido do parâmetro de origem, tornando-o apenas .\toc.yml.