Qual é o comando da linha de comando do Windows para copiar arquivos?

34

Qual é o comando do prompt de comando do Windows para copiar arquivos?

Preciso mover um arquivo do local A para o local B. Além disso, se a pasta do local B não existir, quero que ele seja criado.

Eu preciso que isso seja uma linha de comando para que eu possa automatizá-la.

A versão do Windows é XP.

David Basarab
fonte
11
robocopyfunciona muito bem também
Nixphoe

Respostas:

44

O comando xcopyé o que você está procurando. Exemplo:

xcopy source destination /E /C /H /R /K /O /Y

O comando acima copiará a origem para o destino, arquivos e diretórios (incluindo os vazios), não será interrompido por erro, copiará arquivos ocultos e do sistema, substituirá arquivos somente leitura, preservará atributos e informações de propriedade / ACL e suprimirá o solicitando a substituição de arquivos de destino existentes.

/E    Copies directories and subdirectories, including empty ones.
      Same as /S /E. May be used to modify /T.
/C    Continues copying even if errors occur.
/H    Copies hidden and system files also.
/R    Overwrites read-only files.
/K    Copies attributes. Normal Xcopy will reset read-only attributes.
/O    Copies file ownership and ACL information.
/Y    Suppresses prompting to confirm you want to overwrite an
      existing destination file.

Para mais informações, digite xcopy /?e sua linha de comando.

KCD
fonte
2
Versões futuras do Windows incluem o RoboCopy. No XCOPY do Vista: "NOTA: O Xcopy agora está obsoleto, por favor, use o Robocopy".
George Tsiokos
11
Curiosamente, dois anos mais tarde, após o seu comentário, George, xcopy ainda 'governa o mundo' no Windows 7.
Observe que os ambientes Windows XP incorporados (POSReady 2009, etc) não são fornecidos com o xcopy.
Epoc 22/09/14
Sugeri uma edição para listar todas essas opções ...! Se você não estiver automatizando-lo /E /He talvez /K /Ovocê fica um longo caminho com algumas instruções úteis
KCD
Não se esqueça /J, o que evita um erro no XCopy ao copiar arquivos grandes. Eu não sei por que eles não faria que o padrão ...
BlueRaja
8

Use md para criar a pasta (tudo bem se já existir)

Use copiar ou mover para arquivos e xcopy para pastas

Dani
fonte
Você pode me dar um exemplo da sintaxe?
David Basarab 05/05
3
copiar fred.txt copy_of_fred.txt
Adam Gibbins
11
cópia de /? fornecerá o texto de ajuda, como uma página de manual do DOS.
Scottie T
2

Em um arquivo em lotes:

if not exists locationB\nul mkdir locationB
copy locationA\file locationB

if not existsverifica o parâmetro para ver se ele existe, mas funciona apenas em arquivos. Para verificar a existência de um diretório , é necessário procurar um 'pseudo-arquivo' chamado "nul" - a verificação da existência desse arquivo sempre retornará verdadeiro se o diretório existir.

A linha de cópia copia o arquivo chamado fileno diretório locationAde locationBe nomes de arquivo a mesma coisa. Se você deseja renomear o arquivo ao mesmo tempo, também pode fazer isso:

copy locationA\file locationB\newfilename
Graeme Perrow
fonte
2

Se você deseja sincronizar a cópia e outros recursos avançados (ignore determinadas pastas, inclua apenas alguns curingas), consulte robocopy. Incluído no Vista e além, opcional (nas ferramentas do kit de recursos) nas versões anteriores.

Richard
fonte
Para qualquer coisa importante, eu também vou usar a robocópia. Parece que me lembro de uma enorme diferença de desempenho em relação ao xcopy ao sincronizar um grande número de arquivos.
Kara Marfia
1

Use ROBOCOPY se você estiver criando scripts de backup. O xcopy foi descontinuado e provavelmente será desativado em breve. A robocopy pode fazer tudo o que o xcopy pode. Também é mais flexível e confiável. Criar scripts com robocopy os tornará à prova de futuro.


  1. Use robocopy para copiar pastas facilmente. O comando robocopy substitui o comando xcopy. Ele pode copiar rapidamente pastas inteiras sem precisar se preocupar em definir o conteúdo. Por exemplo, para copiar todo o conteúdo do diretório C: \ tools para a nova pasta D: \ backup \ tools, digite o seguinte:

    robocopy C:\tools D:\backup\tools /e
    

    O modificador / e diz ao robocopy para incluir todos os subdiretórios. Isso inclui pastas vazias. O robocopy copia automaticamente os arquivos ocultos e do sistema. Ele criará novos diretórios se eles não existirem no local de destino.

  2. Espelhe um diretório. O espelhamento de um diretório é ótimo para fazer backups. A opção de espelhamento do robocopy copiará todo o conteúdo da origem para o destino. Ele excluirá qualquer coisa no destino que não exista na fonte. Isso garante que seu backup tenha apenas as versões mais recentes dos seus arquivos. Por exemplo, para espelhar C: \ Usuários \ Meus Documentos em D: \ backup \ Meus Documentos, digite o seguinte: [4]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    Esta função preservará todas as permissões dos arquivos originais.

  3. Ative a reinicialização. Convém incluir a capacidade de reiniciar o processo, caso a conexão seja cortada no meio da cópia.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. Registre o processo de cópia. robocopy permite criar um arquivo de log. Isso pode ajudá-lo a identificar problemas ou gerar um arquivo do que foi copiado.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    O modificador / log + acrescentará o arquivo de log existente em vez de substituí-lo. Se você preferir substituir o arquivo de log antigo, use /log:.txt.

Program-Me-Rev
fonte
0

O xcopy criará a estrutura de diretórios para você. O truque é usar a opção / I e lançar um asterisco no final do nome do arquivo para que o xcopy pense que você está copiando vários arquivos; caso contrário, ele perguntará se o nome do destino é o nome do arquivo que você deseja ou o nome do diretório que você deseja . Por exemplo.

xcopy /I c:\<SourceDir>\<SourceFile> c:\<TargetDirThatDoesNOTExist>

Eu também examinaria o RoboCopy, mas você precisa obtê-lo no kit de recursos, pois ele não está no Windows até o Vista.

WaldenL
fonte
-1

O comando acima cria um nível de diretório adicional com o nome do arquivo de origem. Então ... xcopy / I srcdir \ dir1 \ dir2 \ file1.txt * destdir \ dir1 \ dir2 \ file1.txt resulta em destdir \ dir1 \ dir2 \ file1.txt \ file1.txt

Jeff
fonte
11
Não faz sentido responder a uma pergunta tão antiga, que já tem uma resposta aceita e não contribui com algum valor agregado em sua resposta.
alphamikevictor