如何使用Copy-Item复制文件到匹配正则表达式的目标文件夹?
使用PowerShell的Copy-Item复制文件到符合
*-user模式的文件夹 没问题,用PowerShell的Copy-Item结合Get-ChildItem就能轻松实现这个需求,我给你拆解下步骤和示例代码:
核心思路
先找出所有名称以-user结尾的目标文件夹,再循环将指定文件复制到这些文件夹中。
基础示例(仅查找父目录下的直接子文件夹)
假设你要把C:\source\myconfig.ini复制到C:\app\users目录下所有符合*-user命名规则的文件夹里,代码如下:
# 定义源文件和目标父目录的路径 $sourceFilePath = "C:\source\myconfig.ini" $parentDirectory = "C:\app\users" # 获取所有名称以-user结尾的目录(仅直接子目录) $targetFolders = Get-ChildItem -Path $parentDirectory -Directory -Filter "*-user" # 循环复制文件到每个目标文件夹 foreach ($folder in $targetFolders) { Copy-Item -Path $sourceFilePath -Destination $folder.FullName -Force }
关键参数说明
-Directory:确保只筛选出目录,不会误选文件-Filter "*-user":用通配符匹配所有以-user结尾的目录名(PowerShell的通配符*代表任意长度的字符)-Force:如果目标文件夹中已经存在同名文件,会直接覆盖(不需要的话可以去掉这个参数)
进阶需求:递归查找所有子目录中的*-user文件夹
如果你的*-user文件夹分布在父目录的多层子目录里,只需要给Get-ChildItem加上-Recurse参数即可:
$targetFolders = Get-ChildItem -Path $parentDirectory -Directory -Filter "*-user" -Recurse
额外技巧
- 要是需要复制多个文件,可以把
$sourceFilePath改成通配符格式,比如"C:\source\*.log" - 想查看复制的详细过程,给
Copy-Item加上-Verbose参数,会输出每一步的复制操作 - 记得确认你有足够的权限访问源文件和目标文件夹,避免出现权限报错
内容的提问来源于stack exchange,提问作者marky004
相关产品推荐
相关产品推荐

