繁体   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