Respostas:
Se você deseja copiar pastas vazias também.
xcopy C: \ Pastas D: \ Pastas / t / e
Sim. XCOPY
XCopy source {destination} /t
exemplo
xcopy C:\Folders D:\Folders /t
mais sobre xcopy pode ser encontrado aqui http://ss64.com/nt/xcopy.html
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 PSIsContainer
propriedade, o que é verdadeiro para diretórios, mas não para arquivos.
Veja o aplicativo 47folders, ferramenta gratuita e útil do Windows, faz exatamente o que você precisa por meio da interface gráfica agradável.
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 .
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;
Use o PowerShell para fazer isso usando. Faça uma cópia da pasta e depois
Remove-Item -Path "C:\test\*.*" -recurse
Acabei de usar o freeiro Miroirs, que simplesmente copiava apenas pastas, não o conteúdo (embora essa seja uma opção).
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
/e
deve ser usado também.