Вы можете использовать цикл for в командной строке:
for /r %i in (*) do @move "%i" .
Да, он будет пытаться переместить файлы в текущем каталоге, обратно в текущий каталог, но это не причинит никакого вреда. Убедитесь, что вы запускаете его, находясь в верхней части иерархии, в которую хотите переместить файлы. Запуск этого из другого места будет иметь очень нежелательные последствия.
Если вы хотите запустить его так, чтобы вам не нужно было находиться в определенном каталоге, вы можете ввести пути:
for /r C:\path %i in (*) do @move "%i" "C:\path"
замените C:\path
расположением верхнего каталога, в который будут перемещены все файлы. Если вы хотите запустить его в пакетном скрипте, измените переменные, добавив еще один знак процента:
for /r C:\path %%i in (*) do @move "%%i" "C:\path"
удалить все пустые подкаталоги (из cmd):
for /d %i in (C:\path\*) do @rmdir /s /q "%i"
из партии:
for /d %%i in (C:\path\*) do @rmdir /s /q "%%i"