Вот один из способов сделать это:
Get-ChildItem .\Docs -File |
ForEach-Object {
if($_.Name -match "^(?<Number>\d+)(?<Type>\w+)\.\w+$")
{
Rename-Item -Path $_.FullName -NewName "$($matches.Type)$($matches.Number)$($_.Extension)"
}
}
Строка:
$_.Name -match "^(?<Number>\d+)(?<Type>\w+)\.\w+$")
берет имя файла (например, «23Suppliers.txt») и выполняет сопоставление с шаблономэто, вытаскивая числовую часть (23) и часть «type» («Поставщики»), называя их «Number» и «Type» соответственно.Они хранятся в PowerShell в его автоматической переменной $matches
, которая используется при работе с регулярными выражениями.
Затем мы реконструируем новый файл, используя сведения из исходного файла, такие как расширение файла ($_.Extension
) и соответствующий тип ($matches.Type
) и номер ($matches.Number
):
"$($matches.Type)$($matches.Number)$($_.Extension)"