Как переместить файл с именем на основе имени папки во вложенную папку в той же папке
Я уже некоторое время борюсь и надеялся, что кто-нибудь сможет мне помочь.
У меня есть куча файлов * .pdf, из которых имя файла содержит также имя папки, в которую файлы должны быть перемещены. Код, который я нашел, работает хорошо:
$Folder = "C:\Users\Bob\Desktop\Scripting\Bronmap"
$FileType = "*.pdf"
$Files = Get-ChildItem -Path $Folder -Filter $FileType
$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] )
}
else {
$file | Move-Item -Destination (Join-Path $Folder "No_Folder")
}
}
Я бы хотел, чтобы файл был перемещен в подпапку в названной папке с определенным именем «Контракты». Например:
$file | Move-Item -Destination (Join-Path $Folder $Matches[0] "Contracts" )
Хотя подпапка существует, я не могу заставить ее работать. Любая помощь высоко ценится.
1 ответ
принимает два аргумента,
$Folders
а также
$Matches[0]
в вашем случае так
"Contracts"
не должно быть там.
Вы можете использовать
Join-Path
дважды:
(Join-Path (Join-Path $Folder $Matches[0]) "Contracts")
или объедините контракты вручную:
(Join-Path $Folder ($Matches[0] + "\Contracts"))