Использование -Filter
позволяет предварительно фильтровать файлы для выборки по простому шаблону. Затем перенаправьте оставшиеся результаты в предложение Where-Object
, чтобы можно было использовать оператор regex -match
.
Все совпадающие файлы, которые можно переименовать с помощью scriptblick как параметр -NewName
, например:
# you might want to add switch '-Recurse' if you have logs to rename in subfolders
Get-ChildItem -Path 'X:\Logs' -Filter 'backup_*.log' -File |
Where-Object { $_.BaseName -match '^backup_(\d{2})_(\d{2})_(\d{4})' } |
Rename-Item -NewName { 'backup_{0}_{1}_{2}__.log' -f $Matches[3], $Matches[1], $Matches[2] } -WhatIf
Снимите переключатель -WhatIf
, если на выходе консоли отображаются правильные имена новых файлов
Результат:
X:\Logs\backup_01_03_2020__.log --> X:\Logs\backup_2020_01_03__.log
X:\Logs\backup_01_07_2020__.log --> X:\Logs\backup_2020_01_07__.log