Você não pode fazer move * .. para diretórios. A única maneira de move mover um diretório é especificar o próprio nome do diretório (nenhum caractere curinga é permitido). Então você precisa de um segundo loop (dentro do primeiro) para percorrer os diretórios:
@echo off
for /d %%d in ("*") do (
for /d %%e in ("%%d\*") do (
move "%%e" .
)
)
Não há necessidade de pushd , porque você pode movê-lo do pai para o pai.
nota: isso é usado para um arquivo em lotes, de forma que o %d o % seja dobrado para %%d e %%e . Se você executá-lo diretamente a partir do prompt, você precisará apenas de um % .
Editar:
Se as subpastas primeiro nível (Subpasta1 e Subpasta2) também contiverem arquivos (além das pastas Stuff1 e Stuff2), você poderá adicionar outra movimentação ao exterior.
@echo off
for /d %%d in ("*") do (
for /d %%e in ("%%d\*") do (
move "%%e" .
)
move "%%d\*" .
)