Могу ли я использовать встроенную (WIN7) или стороннюю утилиту, которая позволит мне перемещать содержимое подпапок моих сотен родительских папок на один уровень?

Проиллюстрировать:

PARENT1/gallery/filex.jpg
PARENT1/gallery/filey.jpg
PARENT1/gallery/filez.jpg
PARENT2/gallery/filex.jpg
PARENT2/gallery/filey.jpg
PARENT2/gallery/filez.jpg

Что я хочу сделать (с помощью одного пакетного действия, а не отдельного для каждой папки):

PARENT1/filex.jpg
PARENT1/filey.jpg
PARENT1/filez.jpg
PARENT2/filex.jpg
PARENT2/filey.jpg
PARENT2/filez.jpg

Родители имеют разные имена, но все подпапки имеют одно и то же имя "галерея". Есть ли быстрый и безболезненный способ сделать это? У меня примерно 650+ папок PARENT.

1 ответ1

4

Windows может выполнить одну и ту же команду для всех 650 папок последовательно с помощью простого цикла for /D Перейдите в каталог, содержащий родителей, и выполните следующую команду:

for /D %i in (.\*) do @move %i\gallery\* %i\

При желании вы можете удалить пустые папки 'gallery', используя `rmdir 'без флага /S, например:

for /D %i in (.\*) do @(move %i\gallery\* %i\ && rmdir %i\gallery)

Для большего контроля над файловыми операциями вы можете захотеть взглянуть на robocopy , который гораздо сложнее, чем move . Также обратите внимание, что пробелы в именах каталогов часто анализируются как разделители. Например, rmdir parent 1 удалит каталоги 'parent' и '1', но не 'parent 1'. Если ваши каталоги содержат пробелы, используйте кавычки, например:

for /D %i in (.\*) do @move "%i\gallery\*" "%i\"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .