Переместить файлы старше 31 дня на другой диск - PullRequest
12 голосов
/ 06 мая 2011
Function Move {
  #Moves all files older than 31 days old from the Source folder to the Target 
  Get-Childitem -Path "E:\source" | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-31)} |
  ForEach {
    Move-Item $_.FullName -destination "F:\target" -force -ErrorAction:SilentlyContinue
  }
}

в исходном каталоге находятся файлы старше 2-3 лет, но когда я запускаю скрипт, ничто не перемещается в целевой каталог ?! что не так?

Ответы [ 2 ]

23 голосов
/ 06 мая 2011

Я не знаю, имеет ли это большое значение, но не $. это должно быть $ _.

Я попробовал этот скрипт, и он прекрасно работает для меня:

get-childitem -Path "E:\source" |
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "F:\target"

Обратите внимание, что вам не нужен цикл foreach, потому что объекты будут "переданы" в команду move-item

4 голосов
/ 06 июня 2012

Также помните о скрытых файлах, попробуйте добавить -Force в Get-ChildItem

...