Вы не можете сделать 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\*" .
)