2010-11-01 21:50:02 +0000 2010-11-01 21:50:02 +0000
72
72

Comando de linha de comando para copiar todo o directório (incluindo a pasta do directório) para outro directório

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

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

Tudo o que encontrei até agora só irá copiar os ficheiros e pastas contidos no C:/test para o C:/test2, mas deixa de fora o directório principal.

Respostas (10)

52
52
52
2010-11-01 21:52:22 +0000

Experimente usar o XCOPY com o interruptor /E. Mais informações aqui .

Não tenho tido que aceder a esta informação do meu cérebro em years*!

UPDATE

A documentação diz que copia todos os ficheiros e subdirectórios do directório de origem (o que significa que o directório de origem não é criado), por isso teria que criar primeiro o test no C:\test2 e depois utilizar o XCOPY.

21
21
21
2015-11-22 21:23:05 +0000

Use ROBOCOPY se estiver a criar scripts de backup. xcopy foi depreciado e será provavelmente retirado de uso num futuro próximo. robocopy pode fazer tudo o que o xcopy pode. É também mais flexível e fiável. A criação de scripts com o robocopy irá protegê-los do futuro.


  1. Use o robocopy para copiar facilmente pastas. O comando robocopy substitui o comando xcopy. Pode copiar rapidamente pastas inteiras sem ter que se preocupar em definir o conteúdo. Por exemplo, para copiar todo o conteúdo do directório C:\tools para a nova pasta D:\backup\tools, introduza o seguinte:

  2. Espelhar um directório. Espelhar uma directoria é óptimo para fazer backups. A opção de espelhar o robocopy irá copiar todo o conteúdo da fonte para o destino. Em seguida, irá apagar qualquer coisa no destino que não exista na fonte. Isto assegura que o seu backup só tem as últimas versões dos seus ficheiros. Por exemplo, para espelhar C:\Users\My Documents to D:\backup\My Documents, digite o seguinte:[4]

  3. Habilite o reinício. Você pode querer incluir a capacidade de reiniciar o processo caso a conexão seja cortada no meio da cópia.

  4. Registar o processo de cópia. robocopy permite criar um ficheiro de registo. Isto pode ajudá-lo a identificar problemas ou gerar um arquivo do que foi copiado.

8
8
8
2010-11-02 03:09:24 +0000

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

Robocopy precisa de ser adicionado no XP/2003, mas é standard a partir do Vista.

Na verdade, costumo utilizar xxcopy , mas a versão de 64 bits não é gratuita.

5
5
5
2012-06-22 06:40:49 +0000
XCOPY SourceDrive: DestinationDrive: /S /E

Por exemplo, se precisar de copiar dados da unidade E: para a unidade H: (disco rígido externo) através da linha de comando ou do ambiente de comando xboot.

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
3
3
3
2016-04-29 18:29:05 +0000

Se a pergunta original é o que tenho estado à procura de uma resposta, então eu, e obviamente ninguém acima, arranjei uma solução clara.

O que eu procuro é copiar o directório de testes para o directório test2 sem ter de o digitar novamente. Algo como

xcopy /isvy c:\test d:\test2

onde o d:\test2\test não existe antes da cópia mas existe depois. Isto pouparia no teste de digitação errada pela segunda vez no caminho de destino. O comando acima irá copiar todos os ficheiros e quaisquer directórios para o test2 mas não irá criar o directório de teste.

Até agora

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

é realmente a única forma que encontrei para fazer este trabalho. Mais uma vez, se tiver problemas de digitação não há garantia de que os directórios de origem e de destino irão coincidir.

Uma alternativa para corrigir isto é

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

Isto define o directório de destino na variável mydir e depois utiliza essa variável tanto no caminho de origem como no caminho de destino. Se digitar a variável incorrectamente, ou receberá um erro ou o directório de destino terá provavelmente % no início e no fim.

É mais longo de digitar mas menos hipóteses de obter os nomes errados. Eles serão perceptíveis.

1
1
1
2016-08-18 22:26:31 +0000
xcopy SWITCHES SOURCE DESTINATION

Onde SWITCHES pode ser:

  • Para copiar toda a estrutura do directório:

  • Para sobrescrever ficheiros no destino (caso a pasta de destino já exista):

  • Para sobrescrever e também copiar com ACL+Attributo:

Mais adequado ao seu caso:

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

0
0
0
2017-07-24 12:06:12 +0000

Tive uma situação semelhante em que precisei de copiar uma série de pastas incluindo os nomes das pastas para um local de destino, e esperava que esta pergunta marcada ajudasse, mas na verdade não ajuda.

Em primeiro lugar, há definitivamente ocasiões em que se precisaria desta capacidade e encontrei uma quando tive de copiar pastas da C:\Windows\Assembly\GAC_MSIL. O Windows Explorer recusa-se a mostrar esta pasta, por isso tem de usar um prompt de comando.

Se está familiarizado com a pasta GAC, saberá que os nomes das pastas não são triviais e que é fácil de se enganar se escrever mal.

Então criar a directoria de antemão não é realmente uma opção - a menos que utilize um script - que acabei por utilizar, pois esta foi a única solução real.

Primeiro despeje as pastas que pretende copiar para um ficheiro temporário, isto é normalmente baseado em algum padrão, por exemplo,

dir /B policy* > Folders.txt

Depois faça um laço sobre as entradas na descarga e copie para o destino. Xcopy tratará de criar uma pasta se terminar o argumento de destino com uma barra invertida ()

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

Ponha ambos estes comandos num ficheiro batch e execute.

Agora se apenas xcopy ou robocopy tem isto integrado.

0
0
0
2018-12-07 17:07:00 +0000

Cheguei a uma resposta alternativa funcional para a sua pergunta.

Em primeiro lugar, usando FORFILES com o parâmetro /S, confere que cada subdirectório em C:\test será atingido.

Em segundo lugar, com o parâmetro /C, é possível iniciar uma cadeia de comandos com variáveis nativas, o que torna possível criar os directórios idênticos no destino, e ENTÃO copiar os ficheiros para dentro deles, usando duas estruturas condicionais.

A primeira estrutura condicional @isdir==TRUE (certifique-se de utilizar letras maiúsculas), permite obter directorias apenas a partir da fonte, criando-as depois no destino com MKDIR [path]\@relpath no final.

Finalmente, a segunda assegura que está a trabalhar com ficheiros apenas com @isdir==FALSE, e depois o comando COPY simplesmente faz o trabalho, conseguindo que todos os ficheiros sejam alcançados pelo comando FORFILES, definindo [path]@relpath como destino, para copiar os ficheiros para dentro das directorias criadas.

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"

Esperança que ajuda toda a gente por aqui.

0
0
0
2018-05-15 05:24:03 +0000

XCOPY SourceDrive: DestinationDrive: /S /E

-2
-2
-2
2010-11-02 05:24:21 +0000

Isto fará isso a partir do GUI, não sei como o fazem.

“…pequeno programa permitirá seleccionar o "de directório” e “para directório”, e procederá a copiar APENAS a estrutura do directório" http://www.rjlsoftware.com/software/utility/treecopy/