Скопируйте, проверьте, а затем удалите файлы/дочерние элементы из сетевого расположения.

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

Вот мой алгоритм:

Recursively traverse a network location ($movePath)
for all files $_.LastWriteTime >= x days | forEach {
   xcopy or robocopy $FileName = $_.FullName.Replace($movePath, $newPath)
   if (the files where written correctly) {
     (delete) Remove-Item $Filename from $movePath
   }

Могу ли я объединить xcopy /v (проверить) с robocopy?


person david_jr    schedule 19.07.2013    source источник


Ответы (1)


Вы хотите сохранить структуру подпапок (т. е. файлы из подпапки в источнике переходят в ту же подпапку в месте назначения)? Если это так, этого должно быть достаточно:

$src = 'D:\source\folder'
$dst = '\\server\share'
$age = 10  # days

robocopy $src $dst /e /move /minage:$age

robocopy может самостоятельно обрабатывать проверку (выполняется автоматически) и удаление.

person Ansgar Wiechers    schedule 19.07.2013
comment
а как насчет того, если я хочу журнал движения? Создает ли robocopy его? - person david_jr; 22.07.2013
comment
Будет ли это работать? robocopy $src $dst /e /move /minage:$age /LOG+:$logFile - person david_jr; 22.07.2013
comment
Должно, да. /log+: добавит в журнал, если он уже существует, или создаст новый журнал, если файл не существует. Если вы хотите перезаписать существующий журнал, используйте вместо этого /log:. - person Ansgar Wiechers; 22.07.2013