Удалить начальную часть имени файла - PullRequest
0 голосов
/ 28 мая 2019

У меня есть несколько файлов, которые я хотел бы редактировать.

Они похожи

20190122-233715-886_tlog.354.2019012223043

Префикс состоит в основном из отметок даты и времени и идентификатора обработки.

Мне нужно, чтобы оно было

tlog.354.20190122230435

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Использование регулярного выражения с группой захвата позволяет вам
переименовать в одном конвейере.

Get-ChildItem *_tlog.* | 
 Where-Object Name -match '^\d{8}-\d{6}-\d+_(tlog.*)$'|
   Rename-Item -NewNAme {$Matches[1]} -WhatIF

Если вывод выглядит нормально, удалите -WhatIf

Пример запуска с псевдонимами (в моем немецком языке):

PS> gci *_tlog.*|? Name -match '^\d{8}-\d{6}-\d+_(tlog.*)$'|Ren -NewName {$Matches[1]} -WhatIF
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel 
"Element: A:\Test\20190122-233715-886_tlog.354.2019012223043 
    Ziel: A:\Test\tlog.354.2019012223043".
0 голосов
/ 28 мая 2019

Вы можете использовать функцию замены.Например:

 "20190122-233715-886_tlog.354.2019012223043" -replace "^.*_",""

Вернет

 tlog.354.2019012223043

Так что вы можете сделать что-то вроде:

 $file=Get-Item -Path "D:\temp\20190122-233715-886_tlog.354.2019012223043.txt"
 Rename-Item $file -NewName $($($file.Name) -replace "^.*_","")

И файл будет переименован

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