Я использую следующий скрипт для архивирования всего до 1 января 2013 года:

foreach  ($i in Get-ChildItem "O:\Projects” -Force -Recurse)
{
    if ($i.LastWriteTime -gt ($(Get-Date).AddDays(-649)))
    {
          robocopy $i.FullName "A:\Operations\Projects" /Z /S /MOVE /MIR
    }
}

проблема в том, что скрипт не копирует точное дерево каталогов. это только копирование папки, содержащей соответствующий файл, в корень целевого каталога.

В качестве примера это будет представлять нашу структуру папок:

  • Проект А
    • котировка
      • QuoteA.pdf (последнее изменение 6/2011)
    • закрытие
      • CloseoutA.pdf (последнее изменение 11/2011)
  • Проект Б
    • котировка
      • QuoteB.pdf (последнее изменение 10/2012)
    • закрытие
      • CloseoutB.pdf (последнее изменение 4/2013)

Мой скрипт выше приведет к следующей целевой папке:

  • котировка
    • QuoteA.pdf
    • QuoteB.pdf
  • закрытие
    • CloseoutA.pdf

Приведенный выше пример чрезвычайно прост. Некоторые файлы имеют глубину 8 или 9 папок. в исходной директории около 30 000 папок. Мне нужен полный путь к соответствующему файлу, чтобы он остался нетронутым при перемещении. Как мне это сделать?

1 ответ1

0

Редактировать из комментариев ниже:

Вы можете попытаться разрешить robocopy решать, нужно ли перемещать файл в дереве, и избегать использования Get-Childitem:

robocopy "O:\Projects" "A:\Operations\Projects" /Z /S /MOVE /MIR /MINAGE:649

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