Você pode usar um loop for no prompt de comando:
for /r %i in (*) do @move "%i" .
Sim, ele tentará mover os arquivos no diretório atual, de volta para o diretório atual, mas isso não causa nenhum dano. Certifique-se de executá-lo enquanto estiver no topo da hierarquia para a qual deseja mover os arquivos. Executar isso de outro local terá efeitos muito indesejados.
Se você deseja executá-lo para não precisar estar em um determinado diretório, digite os caminhos:
for /r C:\path %i in (*) do @move "%i" "C:\path"
substitua C:\path
pela localização do diretório principal para o qual todos os arquivos serão movidos. Se você deseja executá-lo em um script em lote, altere as variáveis para incluir outro sinal de porcentagem:
for /r C:\path %%i in (*) do @move "%%i" "C:\path"
para remover todos os subdiretórios vazios (do cmd):
for /d %i in (C:\path\*) do @rmdir /s /q "%i"
do lote:
for /d %%i in (C:\path\*) do @rmdir /s /q "%%i"