$oldyear="2020" $newyear="2021" $baseDir = "c:\tmp\ejemplo\$newyear\" #Filtraremos por ficheros que empiecen por $NameToFind = "F.20." #buscamos en la carpeta del 2021 los ficheros que cumplan el criterio, aunque esten en subdirectorios!!! $filesMatching = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -eq $false -and $_.Name.Contains($NameToFind) } $dirUnSorted=@() foreach($file in $filesMatching){ #Write-Host $file.Directory.Name $dirUnSorted+=$file.Directory.Name } #now we make unique the parent's directories $dirSorted= $dirUnSorted | Sort-Object | Get-Unique $(foreach($dir in $dirSorted){ #si no existe el directorio lo creamos If(!(test-path "c:\tmp\ejemplo\$oldyear\$dir\")) { New-Item -ItemType Directory -Force -Path "c:\tmp\ejemplo\$oldyear\$dir\" } #movemos los elementos que cumplan en criterio move-item -Path "c:\tmp\ejemplo\$newyear\$dir\F.20.*.pdf" -Destination "c:\tmp\ejemplo\$oldyear\$dir\" -PassThru })