You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Get-ChildItem搜索多名称文件并实现自动复制?

修复PowerShell搜索复制脚本

原脚本的问题

  • 数组索引语法错误:PowerShell中访问数组元素需要用$files[$i],原脚本写成$files[i],导致语法报错
  • 报告文件被覆盖:Out-File默认会覆盖已有文件,循环中每次执行都会清空之前的结果
  • 缺少文件复制逻辑:原脚本仅输出路径,未实现复制到指定文件夹的功能

修复后的完整脚本

# 定义要搜索的驱动器路径
$paths = "C:\", "D:\", "E:\", "F:\"
# 定义要匹配的文件名关键词
$fileKeywords = "FileA", "FileB", "FileC"
# 指定目标复制文件夹(请自行修改)
$targetFolder = "C:\TargetFiles"
# 指定报告文件路径
$reportPath = "C:\report.txt"

# 确保目标文件夹存在,不存在则创建
if (-not (Test-Path -Path $targetFolder)) {
    New-Item -ItemType Directory -Path $targetFolder | Out-Null
}

# 清空原有报告文件
if (Test-Path -Path $reportPath) {
    Clear-Content -Path $reportPath
}

# 遍历每个文件名关键词进行搜索
foreach ($keyword in $fileKeywords) {
    # 构建过滤规则:匹配包含关键词的.txt文件(可根据实际扩展名修改)
    $filter = "*$keyword*.txt"
    
    # 搜索文件
    $foundFiles = Get-ChildItem -Path $paths -Recurse -Filter $filter -ErrorAction SilentlyContinue
    
    if ($foundFiles) {
        # 将找到的文件路径追加到报告
        $foundFiles.FullName | Out-File -Path $reportPath -Append
        
        # 复制文件到目标文件夹
        $foundFiles | Copy-Item -Destination $targetFolder -Force
        Write-Host "已复制关键词[$keyword]对应的文件到目标文件夹"
    } else {
        Write-Host "未找到关键词[$keyword]对应的文件"
        "未找到关键词[$keyword]对应的文件" | Out-File -Path $reportPath -Append
    }
}

Write-Host "Press any key to continue..."
$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

关键修改说明

  1. 修正数组索引:改用foreach遍历数组(比for循环更简洁直观,也避免了索引错误)
  2. 报告文件追加写入:添加-Append参数,保留所有搜索结果
  3. 自动创建目标文件夹:用Test-Path和New-Item确保复制目标路径存在
  4. 添加复制逻辑:使用Copy-Item将找到的文件复制到指定文件夹,-Force参数覆盖已存在的同名文件
  5. 错误处理:添加-ErrorAction SilentlyContinue避免因权限问题导致脚本中断
  6. 状态提示:添加控制台输出,实时显示搜索和复制状态

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:32:41