Mesclar pastas que contêm apenas uma pasta

1

Eu tenho uma estrutura de diretório que se parece com isso:

(root) – Folder1  – Folder2  – file3
                             – file4
                             – file5
                                 ︙
       – Folder11 – Folder12 – file13
                             – file14
                             – file15
                                 ︙
            ︙

Ou seja, Pasta1, Pasta11, Pasta21,… cada um contém apenas um único subdiretório. Esses subdiretórios (Pasta2, Pasta12, Pasta22, ...) não servem para nada. Gostaria de mover arquivo3, arquivo4, arquivo5,…, para a Pasta1 e, em seguida, excluir a Pasta2 vazia. E depois repita em toda a árvore; por exemplo,

(root) – Folder1  – file3
                  – file4
                  – file5
                      ︙
       – Folder11 – file13
                  – file14
                  – file15
                      ︙
            ︙

Fazer isso manualmente é impraticável, porque eu tenho centenas ou milhares de pastas como essa. Eu já sei "Remover diretório vazio", o que é ótimo para excluir pastas vazias, mas não é o mesmo.

Como eu os mesclaria facilmente em um sistema Windows 7?

Gamnamno
fonte
Na Superuser, não fazemos recomendações de software, a menos que seja relevante para resolver um problema concreto. A meu ver, é um pouco vago: como estão organizadas todas as pastas? Existe algo que o impede de selecionar todas as pastas e movê-las para a pasta base? Sugiro também que você reserve um tempo para ler a página do tour , para entender como a Rede StackExchange funciona de maneira diferente de outros sites.
Doktoro Reichard
@ Gamnamno: Eu adivinhei o que você quis dizer. Se adivinhei errado, edite a pergunta para corrigi-la.
Scott

Respostas:

0

Você pode fazer isso com o CMD (removi o espaço em branco da "pasta 1" para simplificar o exemplo, removendo a necessidade de aspas.): -

c:
cd \folder1
for /r %f in (*) do move /-y %f \folder1\
for /d %f in (*) do rd /s /q %f

Seria mais seguro criar uma nova pasta de destino e mover os arquivos para lá: depois de ter certeza de que todos os arquivos foram movidos (com dir / s ), exclua \ folder1 (com rd / s ) e renomeie (usando mover ) o nova pasta de volta para \ folder1 : -

c:
md \newfolder1
cd \folder1
for /r %f in (*) do move /-y %f \newfolder1\
dir /s
rem If the previous command shows no files then proceed with:-
cd \
rd /s /q \folder1
move \newfolder1 \folder1

Observe que haverá avisos se os nomes forem duplicados em subdiretórios diferentes (eu incluí / -y no comando move no caso de você colocar os comandos em um arquivo em lotes).

AFH
fonte
Oi, eu tentei isso, mas quando digito esta linha: para / r% f em (*) move / -y% f \ folder1 \, recebo erros de sintaxe incorretos, minhas pastas estão na área de trabalho e estão nomeadas corretamente folder1, folder2 , etc ...
Gamnamno
Se você estivesse em um arquivo em lotes, duplicaria os sinais de porcentagem como em for /r %%f in (*) do move /-y %%f \newfolder1\ .
AFH