微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将文件名基于文件夹名称的文件移动到同一文件夹中的子文件夹

如何解决如何将文件名基于文件夹名称的文件移动到同一文件夹中的子文件夹

我已经挣扎了一段时间了,希望有人能帮助我。

我有一堆 *.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")
    }
} 

我想要的是将文件移动到命名文件夹中的子文件夹中,并命名为“Contracts”。例如:

$file | Move-Item -Destination (Join-Path $Folder  $Matches[0] "Contracts" )

虽然子文件夹存在,但我无法让它工作。 非常感谢任何帮助。

解决方法

Join-Path 需要两个参数,在您的情况下为 $Folders$Matches[0],所以 "Contracts" 不应该在那里。

您可以使用 Join-Path 两次:

(Join-Path (Join-Path $Folder $Matches[0]) "Contracts")

或手动连接合同:

(Join-Path $Folder ($Matches[0] + "\Contracts"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。