вот один из способов сделать эту работу. это чуть более обходной путь, так как файлы могут находиться где угодно в целевом дереве каталогов. что он делает ...
- фальшивое чтение в CSV старых / новых имен файлов
- устанавливает целевой верхний каталог
- устанавливает тип файла
если у вас нет только одного типа файла, это можно удалить здесь и в строке Get-ChildItem
.
- получает все файлы в целевом дереве каталогов, которые соответствуют
ONames
в CSV-файле
- перебирает эту коллекцию файловых элементов
- получает индекс [положение элемента в массиве] OName, который соответствует текущему имени элемента файла
- делает переименование для этого файла
-WhatIf
в конце строки Rename-Item
показывает, что будет. [ ухмылка ] удалите его, когда вы будете готовы сделать это по-настоящему на ваших данных образца [и позже на ваших реальных данных].
вот код ...
# fake reading in a CSV file
# in real life, use Import-CSV
$InStuff = @'
OName, NName
"GWords_2019-02-20.log", "MORE_GWords_2019-02-20.log"
"Two_2019-03-06.log", "Yet another _-_ Two_2019-03-06.log"
"One_GWords_2019-02-27.log", "Slightly different - One_GWords_2019-02-27.log"
'@ | ConvertFrom-Csv
$TargetDir = "$env:TEMP\Testing"
$Filter = '*.log'
$FileList = Get-ChildItem -LiteralPath $TargetDir -Filter $Filter -File -Recurse |
Where-Object {$_.Name -in $InStuff.OName}
foreach ($FL_Item in $FileList)
{
$Index = $InStuff.OName.IndexOf($FL_Item.Name)
Rename-Item -LiteralPath $FL_Item.FullName -NewName $InStuff[$Index].NName -WhatIf
}
вывод [переформатирован для удобства чтения] ...
What if: Performing the operation "Rename File" on target
"Item: C:\Temp\Testing\GWords_2019-02-20.log
Destination:
C:\Temp\Testing\MORE_GWords_2019-02-20.log".
What if: Performing the operation "Rename File" on target
"Item: C:\Temp\Testing\SubOne\One_GWords_2019-02-27.log
Destination:
C:\Temp\Testing\SubOne\Slightly different - One_GWords_2019-02-27.log".
What if: Performing the operation "Rename File" on target
"Item: C:\Temp\Testing\SubTwo\Two_2019-03-06.log
Destination:
C:\Temp\Testing\SubTwo\Yet another _-_ Two_2019-03-06.log".