Rename-Item, конвертировать формат даты - PullRequest
1 голос
/ 15 марта 2019

У меня проблема с конвертированием формата даты в имени файла.Есть ли способ переименовать файл с помощью

Dir | Rename-Item -NewName { $_.Name }

Для преобразования

dd.mm.yyyyy_string.txt

в

yyyyy.mm.dd_string.txt

Или переименовать файлы в каталоге другим способом с powershell

1 Ответ

1 голос
/ 15 марта 2019

Есть несколько способов выполнить вашу задачу,

вот тот, который опирается на данную структуру

dd.mm.yyyyy_string.txt

и использует метод .split() для разрезания BaseName на части,

изменяет их порядок и объединяет их с оператором строкового формата.

Get-ChilItem ??.??.????_*.txt -File | 
  Rename-Item -NewName {("{0}.{1}.{2}_{3}" -f $_.BaseName.split('._',4)[2,1,0,3])+$_.extension} -WhatIf

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

WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das 
Ziel "Element: A:\dd.mm.yyyy_string.txt  
Ziel:          A:\yyyy.mm.dd_string.txt".

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

Чтобы лучше ограничить фактические даты, введите Where-Object

Get-ChilItem ??.??.????_*.txt -File | 
  Where-Object BaseName -match '^[0-3][0-9]\.[01][0-9]\.\d{4}_' |
    Rename-Item -NewName {("{0}.{1}.{2}_{3}" -f $_.BaseName.split('._',4)[2,1,0,3])+$_.extension} -WhatIf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...