Существует папка Papka. Её месторасположение может быть любым в системе (на любом логическом диске, в любой папке). Это я к тому, что работа батника ведётся "из текущей папки". В ней находятся 2 вложенные папки. P1 и P2. Иерархия дальнейших вложений не важна (возможно, даже неизвестна). В P2 лежат папки/файлы, которые должны быть перемещены в P1 с соблюдением иерархии. Нужно переместить содержимое P2 в P1, но сделать это не копированием, а сразу перемещением. Как в проводнике "Вырезать" - "Вставить", чтобы не тратить место на диске. При этом, если будут встречены файлы с одинаковыми именами, перезаписать поверх.
Я пробовал поколдовать с move...
В общем, у меня получились только такие варианты:
move /y .\P2\* .\P1 пишет синтаксис эррор )
а если без звезды, то он тупо P2 внутрь P1 пихает...
Короче, насколько я понял, тут нужно применить рекурсию, чтобы получить список файлов, потому что move работает таким образом только с файлами... вот тут и затык... Что-то не хватило мне мозга оформить её... ( Чувствую себя заварником...
Хелп?
Наверняка уже кто-то с этим сталкивался... Пробовал поиском поюзать, но понял, что я скорее сам допетрю до того, как это сделать, чем найду в 5 темах ответ...
---
Ещё немного покемарив над этим, нашёл вот такую вот фичу:
for /f %p in ('dir /a /b /s .\pp2\') do move /y %p .\pp1\
Получаем список файлов... но это немного не то. Файлы перемещаются в pp1, прям в корень... так быть не должно. Получается, надо список, полученный при помощи dir ещё как-то обрезать, чтобы элементы в нём имели не абсолютный путь... ещё один затык...
Можно попробовать отрезать через subst... привязать текущую папку к букве диска, и уже потом вырезая букву диска, получать относительный путь... в общем, я спать, а то уже утро...
башка думать перестаёт.