簡體   English   中英

使用 PowerShell 根據名稱將文件列表復制到文件夾

[英]Copy list of files to folders depending on name with PowerShell

給定一個目錄dir1與pdf文件和目錄列表dir2與文件夾列表,我想通過以下原則將文件復制到文件夾中:當一個文件名包含一個文件夾名的文件復制到該文件夾。 這是我嘗試過的,但不起作用。 我相信原因是我將文件夾視為文件,但我不確定..

Set-ExecutionPolicy Unrestricted

$FileType = "*.pdf"
$filelist = Get-ChildItem -path "[dir1]" -Filter $FileType
$folderlist = Get-ChildItem -path "[dir2]"


ForEach($file in $filelist)
{
    $file
    $key1 = $file.BaseName
    $key1
    ForEach($folder in $folderlist)
    {
        $folder 
        $key2 = $folder.BaseName
        $key2
        if ($key1 -like $key2){
            Copy-Item -Path $file.FullName -Destination $folder.FullName
        }
    }

}

-like運算符使用通配符,並將執行全長比較:

"a" -like "a" # true
"ab" -like "a" # false

因此,如果要測試一個值是否包含另一個值,則必須在通配符字符串的開頭和結尾處放置星號:

if ($key1 -like "*$key2*")

要獲取目錄,請使用-Attributes Directory

您可以使用成員枚舉$folderlist.Basename )並將腳本簡化為:

Set-ExecutionPolicy Unrestricted

$FileType = "*.pdf"
$filelist = Get-ChildItem -path "$dir1" -Filter $FileType
$folderlist = Get-ChildItem -path "$dir2" -Attributes Directory


ForEach($file in $filelist) {
    $BaseName = $file.BaseName
    if ($folderlist.Basename -Contains $BaseName) { 
        Copy-Item -Path $file -Destination "$dir2\$BaseName"
    }
} 

暫無
暫無

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

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