Мне нужно, чтобы все подпапки в дереве каталогов были сведены в один слой папок, а все файлы остались в папке. например:
inside parent folder:
-folderA
-folderB
-file1
-file2
-file3
-folderC
-file1
-file2
-file3
к этому:
inside parent folder:
folderA
-file1
-file2
-file3
folderB
-file1
-file2
-file3
folderC
Я могу сделать это вручную, показывая путь к папке и расширяя все, затем перетаскивая одну папку за раз в родительскую папку. Проблема в том, что мне нужно пройти более 25 000 папок, и команда для этого сэкономит немало человеко-часов и ускорит проект. Я видел много вопросов, требующих, чтобы все файлы были извлечены в родительскую папку, но мне нужно, чтобы они были отделены друг от друга и все еще находились в соответствующих папках для целей аудита, поскольку каждый файл помечен именем папки, в которой он был изначально сохранен.
источник
Ответы:
Простой пример скрипта PowerShell может выглядеть так:
Это не будет следить за конфликтами имен, и я не уверен, что будет поведение по умолчанию. С 25 000 папок, скорее всего, вы столкнетесь с дублирующимися именами.
Это также предполагает, что ваш график неверен. Исходное предложение означает, что вы сгладите его после перемещения каждого файла на один слой вверх.
источник
folderA
содержащий каталог и файл 1-3. Если у вас так много дубликатов, вам придется подумать о способах их обработки. Например. вы получаете суффикс или префикс их чем-то.