У меня есть папка высокого уровня (назовите ее «уровень 0»), которая содержит около сотни подпапок («уровень 1»), и внутри этих подпапок состоит из подпапок и файлов более низкого уровня («уровень 2»). Мне нужно динамически переместить каждый файл и папку с «уровня 2» в его подпапку уровня 1 (или условно говоря - его родитель).
Для лучшей визуализации:
Master folder
├ Parent folder 1
│ ├─ Subfolder A
│ │ ├─ File A
│ │ └─ File B
│ ├─ Subfolder B
│ │ ├─ File C
│ │ └─ File D
│ ├─ File E
│ └─ File F
.
. ... many folders more ...
.
└─ Parent folder 134
├─ Subfolder CS
│ ├─ File AGF
│ └─ File ARH
├─ File ROQ
└─ File JGL
Мне нужно переместить все содержимое любых подпапок в его родительскую папку. Как и выше, вы можете видеть, что в родительской папке уже могут быть некоторые файлы (например, файлы E, F), и они должны оставаться на месте.
Цель:
Master folder
├─ Parent folder 1
│ ├─ File A
│ ├─ File B
│ ├─ File C
│ ├─ File D
│ ├─ File E
│ └─ File F
├─ Parent folder 119
│ ├─ File AZA
│ ├─ File AZB
│ ├─ File AZC
│ └─ File AZD
... and so on
Сложность заключается в том, что под главной папкой находится более сотни этих родительских папок, и все они имеют разные имена. Подпапки в родительских папках также имеют разные имена.
Я пытался приблизиться к этому, используя Get-ChildItem
, затем с помощью 'ForEach' пытался назначить дочерний элемент (т.е. папку) в качестве переменной, а затем выполнил другой Get-ChildItem
рекурсив и переместил весь контент в родительский, но я я ничего не получаю, и если что-то движется, похоже, оно ссылается на папку C: \ Windows \.
Примечание [извините, исправление Не *], буквальный код, но подход, о котором я думаю:
$master = "\\data\Master"
gci $master | foreach {
$parent = $_
gci ... | Move-Item -Destination $parent
}