Переименуйте файлы .pdf в powershell, используя regex - PullRequest
0 голосов
/ 21 апреля 2020

Мои платежные ведомости загружаются с работы на мой ноутбук в виде pdf-файлов с именем

PaySlip 04_06_2019 - 08_06_2019

с датой в формате ddmmyyyy

Я пытаюсь переименовать их, чтобы лучше отсортировать

PaySlip20190604-20190608

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

'PaySlip 04_06_2019 - 08_06_2019.pdf' -replace 
'.+(\d{2})_(\d{2})_(\d{4}) - (\d{2})_(\d{2})_(\d{4}).pdf', 
'Payslip$3$2$1-$6$5$4'

Но не могу найти способ использовать его с get-childitem и rename-item для фактического переименования файлов. Я пытался добавить приведенный выше код в gci различными способами проб и ошибок, но ни один из них не сработал.

Кто-нибудь знает, где я ошибся или каким образом мне нужно использовать код, который я набрал для функционально переименовывать файлы?

Спасибо

РЕШЕНИЕ:

Get-ChildItem *.pdf | 
Rename-Item -NewName { $_.name -replace 
'.+(\d{2})_(\d{2})_(\d{4}) - (\d{2})_(\d{2})_(\d{4}).pdf', 
'Payslip$3$2$1-$6$5$4.pdf' }

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

РЕШЕНИЕ:

Get-ChildItem *.pdf | 
Rename-Item -NewName { $_.name -replace 
'.+(\d{2})_(\d{2})_(\d{4}) - (\d{2})_(\d{2})_(\d{4}).pdf', 
'Payslip$3$2$1-$6$5$4.pdf' }
0 голосов
/ 21 апреля 2020

Я надеюсь, это то, что вы хотели:

#$path = "Path to your DPFs Folder"
$path = "c:\MyPDFs"

$AllPDFs = Get-ChildItem $path
foreach($pdf in $AllPDFs)
{
    cd $path
    $Newpdf = $pdf -replace '[\s+*_]',''
    Rename-Item $pdf -NewName $Newpdf
}

PaySlip 04_06_2019 - 08_06_2019

PaySlip04062019-08062019

С наилучшими пожеланиями.

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