Для этого вам нужно перебрать исходную папку, где находятся файлы pdf, и, используя их BaseName
(= имя файла без расширения), получить часть года и месяца.
Имея их, создать Структура папок в PowerShell очень сложна:
$sourceFolder = 'D:\OriginalPath' # the path where your pdf files are
$destination = 'D:\PdfFiles' # the folder where the new folder structure should be created
# get the pdf files that have a basename ending with 8 digits
Get-ChildItem -Path $sourceFolder -Filter '*.pdf' -File |
Where-Object { $_.BaseName -match '\d{8}$' } |
ForEach-Object {
# split the year and month part of the file's basename
$match = $_.BaseName -match '(\d{4})(\d{2})\d{2}$'
$year, $month = $matches[1..2]
# construct the folder path
$targetFolder = Join-Path -Path $destination -ChildPath "$year\$month"
# if the target folder does not exist, create it
if (!(Test-Path -Path $targetFolder -PathType Container)) {
$null = New-Item -Path $targetFolder -ItemType Directory
}
# you probably now want to copy or move the file in that target folder
$_ | Copy-Item -Destination $targetFolder
}
Пример исходной папки:
D:\ORIGINALPATH
File_20200201.pdf
File_20200327.pdf
Test_Ref_20191127.pdf
После запуска кода:
D:\PDFFILES
+---2019
| \---11
| Test_Ref_20191127.pdf
|
\---2020
+---02
| File_20200201.pdf
|
\---03
File_20200327.pdf