Forum Discussion
marco69
Dec 07, 2022Copper Contributor
.ps1 script: how to loop in a range of dates
Hi all, I have to copy the content of the folders: C:\mypath\YYYYDDMM\myfolder1 into one folder destination. And: YYYYMMDD is from 20140101 to 20211231 I'm struggling to find a way t...
- Dec 12, 2022
Just tested this script, this works:
foreach ($folder in Get-ChildItem -Path c:\mypath -Directory | Sort-Object Name) { try { Test-Path "$($folder.fullname)\myfolder1" -ErrorAction Stop | Out-Null Copy-Item "$($folder.fullname)\myfolder1" -Recurse -Destination C:\destpath\myfolder1 -Force:$true -Confirm:$false -ErrorAction Stop Write-Host ("Processing {0}" -f $folder.fullname) -ForegroundColor Green } catch { Write-Warning ("Folder myfolder1 not found in {0} or not enough permissions" -f $folder.FullName) } }Source directory:
Destination directory:It will check permissions and copy if it has permissions and will overwrite if the file is already present, it will show a warning if the folder1 folder was not found in a directory.
You can test it for yourself with a test directory structure 🙂
marco69
Dec 13, 2022Copper Contributor
EXCELLENT!!!!
in the afternoon I wll try soon
thank you again!!!
let you know
you have a wagon of beers (or whatever you want) for you approaching!!!!
in the afternoon I wll try soon
thank you again!!!
let you know
you have a wagon of beers (or whatever you want) for you approaching!!!!
Dec 13, 2022
😄 Let me know, give me some likes on my comments and mark it as a solution if it's solved will be enough 😛
- Dec 13, 2022Yes 🙂 Good to hear!
- marco69Dec 13, 2022Copper Contributorthank you so much my friend!
for your patience, kindness and a huge huge proficiency!!!
cheers! - marco69Dec 13, 2022Copper Contributor
HiHarm_Veenstra , we got it!!!
I took the very first version and a little bit arranged, this is the very final version, it work fine!!!
$sourcepath = 'C:\MyPath' $myfolder1 = 'a\b\c\myfolder1' $destinationpath = 'C:\DestPath\myfolder1' Write-Warning ($sourcepath) Write-Warning ($myfolder1) Write-Warning ($destinationpath) $folders = Get-ChildItem -Path $sourcepath -Directory foreach ($folder in $folders | Sort-Object Name) { if (Test-Path "$($folder.fullname)\$($myfolder1)") { Write-Warning ("Processing file: $($folder.fullname)\$($myfolder1)" -f $folder.FullName) Write-Warning ("To be copied to: $($destinationpath)\$($myfolder1)" -f $folder.FullName) robocopy2.exe "$($folder.fullname)\$($myfolder1)" "$($destinationpath)\$($myfolder1)" /S /XO /LOG+:"$($destinationpath)\robocopy.log" /R:1 /W:1 } else { Write-Warning ("Folder {0} not found in {1} or not enough permissions" -f $myfolder1, $folder.FullName) } }