Не совсем понятно, как выглядят детали, которые вы ищете, и как называются папки.
Пример дерева перед:
> tree /F
│ bar Wertpapierertrag 2016-04-08.pdf
│ baz Kontoauszug 2018-01-30.pdf
│ blah Depotauszug 2017-10-15.pdf
│ foo other 2019-05-19.pdf
│ foo Wertpapierabrechnung 2017-10-15.pdf
│ test Kapitalmaßnahmen 2016-04-08.pdf
│
├───Depotauszug
├───Kapitalmaßnahmen
├───Kontoauszug
├───Other
├───Wertpapierabrechnung
└───Wertpapierertrag
Запуск этого скрипта
## Q:\Test\2019\05\19\SO_56211858.ps1
$Folder = [Environment]::GetFolderPath("MyDocuments")
$FileType = "*.pdf"
$Files = Get-ChildItem -Path $Folder -Filter $FileType
$RE = [regex]"(Kapitalmaßnahmen|Kontoauszug|Wertpapierabrechnung|Wertpapierertrag|Depotauszug)"
# alternativly build the RegEx from current subfolder names (might need escaping)
# $RE = [regex]((Get-ChildItem -Path $Folder -Directory -Name) -Join '|')
ForEach($file in $Files){
if ($file.BaseName -Match $RE){
$file | Move-Item -Destination (Join-Path $Folder $Matches[0]) -WhatIf
} else {
$file | Move-Item -Destination (Join-Path $Folder "Other") -WhatIf
}
}
Если вывод выглядит нормально, удалите конечные параметры -WhatIf
.
Дерево после запуска сценария:
> tree /F
├───Depotauszug
│ blah Depotauszug 2017-10-15.pdf
│
├───Kapitalmaßnahmen
│ test Kapitalmaßnahmen 2016-04-08.pdf
│
├───Kontoauszug
│ baz Kontoauszug 2018-01-30.pdf
│
├───Other
│ foo other 2019-05-19.pdf
│
├───Wertpapierabrechnung
│ foo Wertpapierabrechnung 2017-10-15.pdf
│
└───Wertpapierertrag
bar Wertpapierertrag 2016-04-08.pdf