Como copiar uma estrutura de diretórios sem copiar arquivos?


47

Eu tenho uma pasta com muitas subpastas e arquivos. Existe uma maneira de copiar a estrutura de diretórios de pastas e subpastas sem copiar os arquivos que eles contêm, usando cmd ou powershell?

Respostas:


45

Se você deseja copiar pastas vazias também.

xcopy C: \ Pastas D: \ Pastas / t / e


1
correto, /edeve ser usado também.

1
XCOPY Construir no PowerShell por padrão e funciona perfeitamente.
precisa saber é


18

Embora o XCOPY ainda funcione, o Windows Vista e versões posteriores incluem o ROBOCOPY, que possui mais recursos. A sintaxe geral para copiar uma árvore de pastas (incluindo pastas vazias) sem os arquivos é:

robocopy "A:\Source folder" "B:\Destination folder" /e /xf *


3

Método do PowerShell que não requer a cópia de cada arquivo e a exclusão deles:

Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}

Ou, mais sucintamente:

copy .\source C:\path\to\copy -r -fi PSIsContainer

O único truque interessante aqui é a filtragem na PSIsContainerpropriedade, o que é verdadeiro para diretórios, mas não para arquivos.


Isso é super rápido também!
Regmi

1

Veja o aplicativo 47folders, ferramenta gratuita e útil do Windows, faz exatamente o que você precisa por meio da interface gráfica agradável. insira a descrição da imagem aqui

AVISO: O link anterior ( http://47foldersapp.com/ ) agora (novembro de 2017) leva ao anúncio de roupas. A última cópia boa do Internet Archive está aqui . O software ainda pode estar disponível em sites de download de freeware como este .


0

Provavelmente existe uma solução melhor, mas eu veria o seguinte:

  • Copie tudo e esvazie as pastas com um script.

  • Faça um script que copie tudo se não tiver extensão. A menos que você tenha arquivos sem extensão nas pastas, o que não deveria, deve funcionar, porque, bem. Pastas não têm extensões. Algo que se pareceria com isso no pseudocódigo:

diretório aberto ($ caminho);
while ($ file = get_directory_content) {
if (vazio (get_file_extension ($ file))) {
copy_the_file ($ arquivo, $ destino);
}
}
fechar_diretório;


Infelizmente, temos arquivos sem extensões. De .placeholders para repositórios de código, a alguns arquivos de dados específicos.
Rook

Oh. Bem. Talvez exista algo se (é uma pasta), então. Mas uhm. A coisa xcopy acima parece que é a coisa certa para você então. A menos que não seja, nesse caso, você pode executar um script para 1. copiar todas as pastas e 2. esvaziar todas as pastas. Ou alguma coisa. Mas isso é ... Longo. xD
Ariane

0

Use o PowerShell para fazer isso usando. Faça uma cópia da pasta e depois Remove-Item -Path "C:\test\*.*" -recurse



-1

Até onde eu sei, existem softwares de terceiros que podem fornecer essa funcionalidade, se você quiser fazer com o prompt de comando, o comando copy está disponível. digite help copy no cmd, que fornece detalhes de como você copia arquivos através do cmd.
depois de copiar, vá para a pasta através do cmd e execute o comando

del *. *
que exclui arquivos porque não há pastas. personagem


3
Exclui arquivos, mas quem disse que os nomes de pastas também não podem conter um ponto / ponto?
Karan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.