I have this kind of tree folders structure:
c:\Loc_2636\08\20220801.csv
c:\Loc_2636\06\20220607.csv
c:\Loc_2538\07\20220701.csv
i would like to add to any files suffix of upper "Loc_*" folder. At the end they should be like:
c:\Loc_2636\08\Loc_2636_20220801.csv
c:\Loc_2538\07\Loc_2538_20220701.csv
I thought it was simple but i got in trouble because if I do this:
Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName $_.FullName.Split("\")[5]+"_"+$_.Name -WhatIf}
This error is raised: A positional parameter cannot be found that accepts argument '+_+20220701.csv.Name'.
Instead if I try to do that through a function
function rena(){
param ([string]$name, [string]$fullpath)
$arr=$fullpath.Split("\")
foreach($tmp in $arr)
{
if($tmp.ToString().Contains("Loc_")){
$found=$tmp;
}
}
return $found+"_"+$name
}
Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName {rena($_.Name,$_.FullName) -WhatIf}}
another error is raised
Cannot evaluate parameter 'NewName' because its argument is specified as a script block and there is no input. A script block cannot be evaluated without input.
I'm quite confused since i already used function inside Get-ChildItem command but I never got this error.
Thank you in advance for any help.