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

如何实现多路径CSV文件归档、删首行及迁移的PowerShell脚本?

解决方案

以下是完善后的PowerShell代码,可同时实现归档复制、删除首行、移动文件三个需求:

# 定义需要处理的3个文件路径
$Files = @( 
    "Z:\Test\1\Script\Export1_2022-11-09.csv", 
    "Z:\Test\2\Script\Export2_2022-11-09.csv",
    "Z:\Test\3\Script\Export3_2022-11-09.csv"
)

# 定义批处理读取的目标文件夹(可根据实际路径修改)
$BatchProcessFolder = "Z:\Test\BatchProcessInput"

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

$Files | ForEach-Object {
    # 拆分当前文件的目录和文件名
    $fileDir = Split-Path -Path $_ -Parent
    $fileName = Split-Path -Path $_ -Leaf

    # 拼接归档文件夹路径和完整归档文件路径
    $archiveDir = Join-Path -Path $fileDir -ChildPath "Archive"
    $archiveFilePath = Join-Path -Path $archiveDir -ChildPath $fileName

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

    # 1. 复制文件到对应路径的Archive文件夹归档
    Copy-Item -Path $_ -Destination $archiveFilePath -Force

    # 2. 删除原文件首行
    (Get-Content $_ | Select-Object -Skip 1) | Set-Content $_ -Force

    # 3. 将处理后的文件移至批处理读取文件夹
    Move-Item -Path $_ -Destination $BatchProcessFolder -Force
}

关键逻辑说明

  • 动态生成归档路径:通过Split-Path拆分文件的目录和文件名,再用Join-Path拼接出对应路径下的Archive文件夹路径,无需硬编码每个归档路径,适配不同文件的存储位置。
  • 自动创建文件夹:在执行复制和移动操作前,先检查目标文件夹是否存在,不存在则自动创建,避免因文件夹缺失导致操作失败。
  • 覆盖处理:使用-Force参数确保当目标位置存在同名文件时直接覆盖,若不需要覆盖可移除该参数。
  • 首行删除:保留原代码的逻辑,读取文件内容并跳过首行后写回原文件,完成格式处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:05:26