Moving older folders to archive

Welcome Forums General PowerShell Q&A Moving older folders to archive

This topic contains 2 replies, has 2 voices, and was last updated by

 
Participant
1 year, 1 month ago.

  • Author
    Posts
  • #97116

    Participant
    Topics: 2
    Replies: 2
    Points: 2
    Rank: Member

    Hi all PowerShell users!
    I'm completely noob in powershell so sorry if my question will sound "very stupid" for you.

    Situation:
    I have a folder that contains patients DICOM-images and I need to move all folders that are older than 31 day to archive in external drive.

    I know that's sound simple but I'm stuck a little.

    $Source = 'C:\Vitrea\Patients'
    $Destenation = 'D:\PatientsArchive'
    $Date = (Get-date.AddDays(-31))
    $Directory = Get-ChildItem $Source -Recurse | Where {$_.CreationTime -lt $Date}
    Move-Item -Path $Directory -Destination $Destenation
    

    I'm was thinking of using If..Else construct in way like:
    If Archive folder exists and if there is some patients to archive then just do it
    Else if folder doesn't exists then create it and archive patients there
    Else if folder exists and it's no patients to archive just don't do anything.

    Problem is...I just don't know how to do this. A little thought about that:

    $Source = 'C:\Vitrea\Patients'
    $Destenation = 'D:\PatientsArchive'
    $Date = (Get-date.AddDays(-31))
    $Directory = Get-ChildItem $Source -Recurse | Where {$_.CreationTime -lt $Date}
        if(Test-Path $Destenation){
        Write-Host "Archiving now"
        Move-Item -Path $Directory -Destination $Destenation
                                   }#End if
            Elseif(Test-Path $Destenation){
            New-Item -ItemType Directory -Path $Destenation
            Move-Item -Path $Directory -Destination $Destenation
                                           }#End elseif
        Else{
        Write-Host "Nothing to archive"
            }# end Else
    

    Any help would be greatly appreciated

  • #97172

    Participant
    Topics: 2
    Replies: 437
    Points: 875
    Helping Hand
    Rank: Major Contributor

    I would say the If/Else there is going to be a bit cumbersome, mainly because you gotta re-run your script to make sure everything is good. Instead, split them up a bit:

    if (-not (Test-Path $FolderPath)) {
        New-Item -Type Directory -Path $FolderPath
    }
    # DO things to archive patients here
    
    • #97179

      Participant
      Topics: 2
      Replies: 2
      Points: 2
      Rank: Member

      Thank you very much Joel!
      Now this scripts looks like:

      $Source = 'C:\Vitrea\Patients'
      $Destenation = 'D:\PatientsArchive'
      $Date = Get-Date
      $Directory = Get-ChildItem $Source -Recurse | Where {$_.CreationTime -lt $Date.AddDays(-31)}
          
          if( -not (Test-Path $Destenation)){
             New-Item -ItemType Directory -Path $Destenation
                                           }#end if
          Else{
          Move-Item -Path $Directory -Destination $Destenation    
              }#end Else
      
      

      Will think a little more about how to make it look more "adult", but for now it's OK 🙂

The topic ‘Moving older folders to archive’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort