Мои платежные ведомости загружаются с моего ноутбука на работу в виде 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' }
0
AlexRussell 21 Апр 2020 в 07:41

2 ответа

Лучший ответ

Решение:

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' }
1
AlexRussell 22 Апр 2020 в 07:51

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

#$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

С уважением.

0
Current Redemption 21 Апр 2020 в 06:45