如何实现多路径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
相关产品推荐
相关产品推荐

