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 🙂
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 😛
marco69
Dec 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)
}
}
- 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!