powershell - 使用 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*")
推荐阅读
- reactjs - 如何在我的 Modal 上使用键(从列表项键中定义)作为道具
- c# - 应用程序不会通过 docker build 从 github 检索秘密
- python - Jinja2得到语法错误Python生成器
- python - Keras:`image_dataset_from_directory` 中的标签的 one-hot
- typescript - 表单切片缩减器中的复选框处理
- python - 如何将系列字典转换为熊猫中的单独列
- javascript - 检查nodejs中的星期几是否在星期一和星期日之间
- javascript - 在这个例子中,传递给 promise 的回调函数的参数是什么?
- android - androidx.media2.player.MediaPlayer 结合两种声音
- python - 使用 Spacy 正则表达式的意外结果