Вы не можете сделать move * .. для каталогов. Единственный способ move каталога - это указать само имя каталога (подстановочные знаки не допускаются). Так что вам нужен второй цикл (внутри первого), чтобы пройтись по каталогам:
@echo off
for /d %%d in ("*") do (
for /d %%e in ("%%d\*") do (
move "%%e" .
)
)
Нет необходимости в pushd потому что вы можете переместить его из родительского в родительский.
примечание: это используется для пакетного файла, поэтому для %d % удваивается до %%d и %%e . Если вы запускаете его прямо из командной строки, вам нужен только один % .
Редактировать:
Если подпапки первого уровня (Subfolder1 и Subfolder2) также содержат файлы (помимо папок Stuff1 и Stuff2), вы можете добавить еще один шаг для внешнего.
@echo off
for /d %%d in ("*") do (
for /d %%e in ("%%d\*") do (
move "%%e" .
)
move "%%d\*" .
)