Извлечение одного уровня из дерева каталогов

246
Jake

Некоторое время я пытался найти эффективный способ уплотнения больших деревьев каталогов более чем 10 внешних жестких дисков. Я опишу проблему более подробно, чтобы избежать недоразумений (надеюсь) и сэкономить ваше время. Пожалуйста, потерпите меня, я на довольно базовом уровне с моими командами DOS.

Текущая структура:

X: \ [основной каталог] \ [разные каталоги уровня 2] \ [разные каталоги уровня 3] \ [много файлов и подкаталогов]

Желаемая структура:

X: \ [основной каталог] \ [разные каталоги уровня 2] \ [файлы и подкаталоги]

Поэтому я хочу вывести 3-й уровень жирным шрифтом . Я изучал и экспериментировал со всеми предлагаемыми решениями похожих проблем, с которыми я сталкивался в Интернете, от простых команд до пакетных файлов и сценариев VBS, но безуспешно.
Тот факт, что каталоги уровня 3 (а также каталоги уровня 2) имеют разные имена, кажется, значительно усложняет задачу, но я нашел относительно простой способ (Explorer) вручную переименовать все каталоги уровня 2 в то же имя. Так что я могу преобразовать структуру в:

X: \ [основной каталог] \ [разные каталоги уровня 2] \ [XXX] \ [много файлов и каталогов]

С этим (надеюсь полезным) контекстом, где я застрял. После долгих экспериментов я получил следующую команду почти для правильной работы в командной строке:

for / R% i in ("XXX \ . ") сделать xcopy "% i" "% ~ pi .." / S / E
[добавлены пробелы вокруг косой черты]

Оставшаяся проблема заключается в том, что он копирует подкаталоги на самом низком уровне вверх на один уровень, но по какой-то странной причине не файлы, содержащиеся в этих подкаталогах. Есть ли параметр, который решает это?
Однако гораздо более серьезная проблема заключается в том, что мне нужно переместить исходные файлы, потому что жесткие диски почти заполнены и не могут хранить копии всех файлов ...

Основываясь на предложениях, которые я прочитал на форуме, я обратился к ROBOCOPY . Синтаксис, в который я попал:

for / R% i in ("XXX \ . ") делать робокопию / MOVE / S / E "% i" "% ~ pi .."
[добавлено пробелов вокруг косой черты]

К сожалению, это не работает в командной строке (ни в Power Shell, ни в виде командного файла, между прочим, выдавая разные ошибки в каждом случае). Возвращает ошибку

«ОШИБКА 123 (0x0000007B) Доступ к исходному каталогу X: \ основной каталог \ другой уровень каталога 2 \ XXX \ filename.ext \
Неверный синтаксис имени файла, имени каталога или метки тома».

Очевидно, для ROBOCOPY требуются ссылки на каталоги / файлы, отличные от XCOPY. Я экспериментировал с косыми чертами, цитатами и звездочками, но я застрял ... У кого-нибудь есть решение? Большое спасибо!

0

0 ответов на вопрос