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

如何在PowerShell脚本1生成CSV批文件后自动调用脚本2并间隔执行?

批量CSV生成后自动处理并间隔等待的实现方案

现有脚本背景

脚本1:拆分生成批量CSV

用于将大型Master.csv拆分为每50条数据一个的小批量CSV:

$BatchNr = 1
Import-Csv -Path .\Master.csv | Create-Batch -Size 50 | ForEach-Object {
    $_ | ForEach-Object {
        $_ # 可在此对批内单条数据做预处理
    } | Export-Csv ".\Batch$BatchNr.csv"
    $BatchNr++
}

生成文件命名为Batch1.CSV、Batch2.CSV等。

脚本2:处理单个批量CSV

示例处理代码:

$Users = Import-Csv -Path "Batch1.CSV"
# 此处为具体的业务处理逻辑

需求目标

实现生成一个批文件后立即调用脚本2处理,处理完成后间隔15分钟再处理下一个批文件,替代手动操作。

具体实现步骤

1. 修改脚本2,支持动态接收文件路径参数

让脚本2可以处理任意传入的批文件,而非固定指向Batch1.CSV:

param(
    [Parameter(Mandatory=$true)]
    [string]$FilePath
)

# 读取目标批文件
$Users = Import-Csv -Path $FilePath

# 执行你的业务处理逻辑
Write-Host "已开始处理文件: $FilePath"
# ... 此处添加原有处理代码

2. 修改脚本1,集成调用与等待逻辑

在脚本1中,每生成一个批文件后立即调用脚本2,处理完成后等待15分钟再继续下一批:

$BatchNr = 1
$batchFiles = @()

Import-Csv -Path .\Master.csv | Create-Batch -Size 50 | ForEach-Object {
    $currentBatchPath = ".\Batch$BatchNr.csv"
    
    # 导出当前批CSV
    $_ | ForEach-Object {
        $_ # 保留原有批内数据处理逻辑
    } | Export-Csv -Path $currentBatchPath -NoTypeInformation
    
    $batchFiles += $currentBatchPath

    # 调用脚本2处理当前批文件
    & .\脚本2.ps1 -FilePath $currentBatchPath

    # 非最后一批则等待15分钟
    if ($BatchNr -lt $batchFiles.Count) {
        Write-Host "处理完成,等待15分钟后开始下一批..."
        Start-Sleep -Seconds 900 # 15*60=900秒
    }

    $BatchNr++
}

关键细节说明

  • 使用&操作符调用脚本2,并通过-FilePath参数传递当前批文件路径
  • Start-Sleep -Seconds 900精确实现15分钟的等待时长
  • 加入最后一批跳过等待的判断,避免处理完所有文件后无意义的等待
  • 脚本2通过param块强制要求传入文件路径,确保调用时不会出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:42