Как игнорировать часть файла и переименовать другую в PowerShell - PullRequest
0 голосов
/ 21 марта 2019

В настоящее время у меня запущен скрипт, который заменяет некоторые указанные символы файла. Я недавно заметил, что некоторые файлы имеют похожие символы в имени файла. Я хочу переименовать только часть имени файла после _.

Пример имени файла:

WB03042019_1226324201

Мой текущий скрипт:

Get-ChildItem *4201.dat | foreach {
    Rename-Item $_ $_.Name.Replace("4201", "hfmau2")
}

Моя проблема состоит в том, что это производит это имя файла:

WB030hfmau29_122632hfmau2

1 Ответ

0 голосов
/ 21 марта 2019

Поскольку ваш вопрос не показывает, каким должно быть желаемое имя файла, неясно.

Если вы хотите изменить только «4201» в конце имени файла и после подчеркивания, вы можете использовать это:

Get-ChildItem -Path '<PATH TO THE FILES>' -Filter *4201.dat -File | 
    Rename-Item -NewName {'{0}{1}' -f ($_.BaseName -replace '4201$','hfmau2'), $_.Extension}

, который создает новое имя файла:

WB03042019_122632hfmau2.dat

Если вы хотите изменить все после подчеркивания, а '4201' просто для фильтрации ваших файлов, то примерно так и должно это сделать:

Get-ChildItem -Path '<PATH TO THE FILES>' -Filter *4201.dat -File | 
    Rename-Item -NewName {'{0}{1}' -f ($_.BaseName -replace '(.+_)(\w+)$','$1hfmau2'), $_.Extension}

, который создает новое имя файла:

WB03042019_hfmau2.dat

Если это НЕ то, что вы хотите, Отредактируйте свой вопрос и покажите нам, каким должно быть желаемое новое имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...