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

PowerShell文本解析问题:提取学生数据并移除首尾换页符

PowerShell代码修正方案

修正后的代码如下:

# 读取整个文件内容,保留所有字符(包括换页符\f)
$rawContent = Get-Content "C:\EDICleanUp\1_ToBeProcessed\edi.txt" -Raw

$Transcript = "_EDI_TRANSCRIPT_"
$Tdate = Get-Date -Format yyyy-MM-dd
$ProcessedFilePath = "C:\EDICleanUp\2_Processed"
$Complete = "C:\EDICleanUp\3_Original"
$ToBeProcessed = "C:\EDICleanUp\1_ToBeProcessed\edi.txt"

# 按"END OF TRANSCRIPT"行+换页符分割内容,排除该换页符
$transcripts = $rawContent -split '\*{10}  END OF TRANSCRIPT  \*{10}\f', 0, 'Multiline'

$fileIndex = 1
foreach ($transcript in $transcripts) {
    # 移除当前成绩单首尾的换页符
    $cleanedTranscript = $transcript.Trim("`f")
    # 跳过空内容(避免分割后产生空文件)
    if ([string]::IsNullOrWhiteSpace($cleanedTranscript)) {
        continue
    }
    $outputPath = Join-Path $ProcessedFilePath "$Tdate$Transcript$fileIndex.txt"
    # 写入文件,保留原始换行和剩余换页符
    Set-Content -Path $outputPath -Value $cleanedTranscript -NoNewline
    $fileIndex++
}

# 移动原文件到完成目录
Move-Item -Path $ToBeProcessed -Destination $Complete

关键改动说明

  • 使用Get-Content -Raw读取整个文件为单个字符串,确保所有字符(包括\f)的完整性,避免按行拆分导致换页符处理混乱
  • 正则分割时直接匹配********** END OF TRANSCRIPT **********\f,将其作为分隔符,自动排除该换页符,不会被写入下一个文件
  • 用Trim("f")`移除每个成绩单首尾的换页符,保留内容内部的换页符
  • 使用Set-Content -NoNewline写入文件,避免额外添加换行符破坏原始格式
  • 增加空内容判断,防止生成空文件

内容的提问来源于stack exchange,提问作者Wayne W. Van Ellis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:01:01