Comando de linha do Commmand para copiar o diretório inteiro (incluindo a pasta do diretório) para outro diretório

54

usando a linha de comando, gostaria de copiar um diretório para outro. Por exemplo, existe o diretório C:/test e C:/test2 .

Gostaria de copiar C:/test em C:/test2 , para que o resultado seja C:/test2/test

Tudo o que encontrei até agora somente copiará os arquivos e pastas contidos em C:/test em C:/test2 , mas deixará de fora o diretório pai.

    
por Scott Chamberlain 01.11.2010 / 22:50

10 respostas

47

Tente usar XCOPY com a opção /E . Mais informações aqui .

Eu não tive que acessar essa informação do meu cérebro em anos !

UPDATE

A documentação diz que ele copia todos os arquivos e subdiretórios do diretório de origem (significando que o diretório pai não é criado), então você teria que criar test em C:\test2 primeiro e então usar XCOPY . / p>     

por 01.11.2010 / 22:52
29
xcopy c:\test c:\test2\test /s /e /h

Veja aqui informações sobre o XCOPY [ 1 , 2 ]

    
por 01.11.2010 / 22:52
13

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

  1. Use o robocopy para copiar pastas facilmente. O comando robocopy substitui o comando xcopy. Ele pode copiar rapidamente pastas inteiras sem ter que 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 arquivos ocultos e de sistema. Ele criará novos diretórios se eles não existirem no local de destino.

  2. Espelhe um diretório. Espelhar um diretório é ótimo para fazer backups. A opção de espelhamento de robocopy copiará todo o conteúdo da origem para o destino. Em seguida, ele excluirá qualquer coisa no destino que não exista na origem. Isso garante que o backup tenha apenas as versões mais recentes dos seus arquivos. Por exemplo, para espelhar C: \ Usuários \ Meus Documentos para 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 o reinício. Você pode 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. O 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 + adicionará o arquivo de log existente em vez de sobrescrevê-lo. Se você preferir apenas sobrescrever o arquivo de log antigo, use /log:.txt.

por 22.11.2015 / 22:23
7

Eu recomendo robocopy sobre xcopy , pois tem muito mais opções, incluindo manter os timestamps intactos, o que acho essencial.

O Robocopy precisa ser adicionado no XP / 2003, mas é padrão do Vista em diante.

Na verdade, eu geralmente uso xxcopy , mas a versão de 64 bits não é gratuita.

    
por 02.11.2010 / 04:09
4
XCOPY SourceDrive: DestinationDrive: /S /E

Por exemplo, se você precisar copiar E: dados da unidade para H: drive (disco rígido externo) por meio da linha de comando ou do ambiente de comando xboot.

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
    
por 22.06.2012 / 08:40
1

Se a pergunta original é o que eu tenho procurado uma resposta, então, obviamente, e ninguém acima, surgiu uma solução clara.

O que estou procurando é copiar o diretório de teste para o diretório test2 sem precisar digitá-lo novamente. Algo como

xcopy /isvy c:\test d:\test2

onde d:\test2\test não existe antes da cópia, mas depois. Isso economizaria no teste de erro de digitação na segunda vez no caminho de destino. O comando acima copiará todos os arquivos e diretórios para o test2, mas não criará o diretório de teste.

Até agora

xcopy /isvy c:\test d:\test2\test

é realmente a única maneira que encontrei para fazer esse trabalho. Novamente, se você tiver problemas de digitação, não há garantia de que os diretórios de origem e destino corresponderão.

Uma alternativa para corrigir isso é

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%

Isso define o diretório de destino na variável mydir e, em seguida, usa essa variável no caminho de origem e de destino. Se você digitar a variável errada, receberá um erro ou o diretório de destino provavelmente terá % no início e no final.

É mais longo digitar, mas menos chances de obter nomes errados. Eles serão notáveis.

    
por 29.04.2016 / 20:29
0
xcopy SWITCHES SOURCE DESTINATION

Onde SWITCHES pode ser:

  • Para copiar toda a estrutura de diretórios:

    /hiev

  • Para substituir arquivos no destino (caso já exista uma pasta de destino):

    /hievry

  • Para substituir e copiar com o Atributo da ACL +:

    /hievxok

Mais adequado ao seu caso:

xcopy /hievry C:\test C:\test2\test

    
por 19.08.2016 / 00:26
0

Eu tive uma situação semelhante em que precisei copiar várias pastas, incluindo os nomes das pastas, para um local de destino, e esperava que essa pergunta marcada como respondida ajudasse, mas na verdade não.

Em primeiro lugar, há definitivamente ocasiões em que alguém precisaria dessa habilidade e encontrei uma quando precisei copiar pastas de C: \ Windows \ Assembly \ GAC_MSIL. O Windows Explorer se recusa a mostrar essa pasta, portanto, você precisa usar um prompt de comando.

Se você estiver familiarizado com a pasta GAC, saberá que os nomes das pastas são não-triviais e fáceis de serem errados se você digitar incorretamente.

Portanto, criar o diretório de antemão não é realmente uma opção - a menos que você use um script - que acabei usando, pois essa era a única solução real.

Primeiro, despeje as pastas que você deseja copiar para um arquivo temporário. Isso geralmente é baseado em algum padrão, por exemplo,

dir /B policy* > Folders.txt

Em seguida, faça um loop sobre as entradas no dump e copie para o destino. Xcopy irá cuidar de criar uma pasta se você terminar o argumento de destino com uma barra invertida (\)

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

Coloque esses dois comandos em um arquivo de lote e execute.

Agora, se apenas o xcopy ou o robocopy tiverem isso incorporado.

    
por 24.07.2017 / 14:06
0

XCOPY SourceDrive: DestinationDrive: / S / E

    
por 15.05.2018 / 07:24
-2

Isso fará isso a partir da GUI, não sei como eles fazem isso.

"... um pequeno programa permitirá que você selecione" do diretório "e" no diretório ", e ele continuará copiando SOMENTE a estrutura do diretório."

link

    
por 02.11.2010 / 06:24