簡體   English   中英

通過將文件與文件夾名稱匹配來將文件復制到文件夾的 Powershell 腳本

[英]Powershell script to copy files to folders by matching file to folder names

我有一個包含空文件夾的目錄,我們稱之為 D1。 另一個目錄(我們稱之為 D2)包含命名為文件名包含來自 D1 的文件夾名稱的文件。 我想將 D2 中的文件名與 D1 中的文件夾名相匹配,並將文件復制(而不是移動)到 D1 中的相應文件夾中。 這可以使用 Powershell 完成嗎? 例如,D1 看起來像:

FolderName1
FolderName2
FolderName3

D2 中的文件如下所示:

abcd.FolderName1.txt
xyz.FolderName2.txt
qwerty.FolderName3.txt

編輯:上面的文件夾名稱只是一個例子。 實際的文件夾/文件名可能會有所不同,例如Folder#NameMy_Folderabcd.1234.Folder_Name等。

我使用正則表達式從文件名中提取文件夾名稱。 那里有一些錯誤處理,但如果該文件夾不存在,您可能希望改為創建該文件夾。

$FromPath = 'C:\D2'
$ToPath = 'C:\D1'

$FilesToMove = Get-ChildItem -Path $FromPath -File

$RegexPattern = '^[^.]+\.(?<NewFolder>[^.]+)\..+$'

foreach ($File in $FilesToMove) {
    If($File.Name -match $RegexPattern){
        $OutFolder = Join-Path -Path $ToPath -ChildPath $Matches.NewFolder
        if (Test-Path -Path $OutFolder) {
            Copy-Item -Path $File -Destination $OutFolder
        }
        else {
            Write-Error -Message "Invalid or Inaccesible path $OutFolder"
        }
    }
    else {
        Write-Error -Message "Filename $($File.Name) Is Incorrectly Formatted"
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM