[英]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.