PowerShell перемещение файлов на основе дат

#powershell

#powershell

Вопрос:

Я пытаюсь переместить все файлы старше шести месяцев в архивный файл, который у меня есть

 #set root folder
$baseFolder = "C:UsersCalebDesktop"
$archiveBase = "C:UsersCalebDesktop"
$limit_to=(Get-date (Get-date -Format d)).AddDays(-180)
#get files inside root
$folder = Get-ChildItem $baseFolder -File

#for each folder

foreach($file in Where-$folder.CreationTime -lt $limit_to ) {

    #build the move destination path
    $a=$file.CreationTime.Date.Year 
    $archive="Archive"
    $name=$a " " $archive
    $destination = Join-Path $archiveBase $name


    #Create Directory And Deposite Files
    if(Test-Path $destination)
    {
        mv $file $destination
    }
    else
    {
        mkdir $destination
        mv $file $destination
    }

}
  

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

Комментарии:

1. Вы можете получить доступ к году создания файла через ((Get-ChildItem).CreationTime).Year . Просто включите это соответствующим образом в путь назначения copy-item .

2. хорошо, извините за тот последний беспорядок, который не имел никакого смысла, я думаю, вы могли бы решить мою проблему сейчас @davidhigh

3. посмотрим, поможет ли это blog.kandiaro.net/2016/08/uncategorised /…

Ответ №1:

попробуйте это

   $baseFolder = "C:UsersCalebDesktop"
  $archiveBase = "C:UsersCalebDesktop"
  $limit_to=(Get-date (Get-date -Format d)).AddMonths(-6)

  mkdir $archiveBase -force

  Get-ChildItem $baseFolder -File | where CreationTime -lt $limit_to | foreach {move-item $_.FullName -Destination ($archiveBase   $_.CreationTime.Year   " Archive"   $_.Name) -Force }