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

PowerShell给文本文件加表头后丢失换行,求问题排查

问题根源

Get-Content默认会将文件内容读取为字符串数组,每行对应数组的一个元素。当你执行$newString + "rn" + $fileContents时,PowerShell会自动把数组转换为单个字符串,数组元素间用空格连接,导致原文件所有行被合并成一行,最终输出文件仅保留两行:新增的首行,以及合并后的原内容行。

修复方案

方案1:一次性读取文件为完整字符串(保留原始换行)

使用Get-Content的-Raw参数,直接读取包含所有换行符的完整文本,避免数组转换问题:

# 读取文件内容(保留原始换行结构)
$fileContents = Get-Content $latestFile.FullName -Raw

# 在开头插入新字符串
$fileContents = $newString + "`r`n" + $fileContents

方案2:将新字符串添加到数组头部

利用数组操作,把新字符串作为数组第一个元素,写入文件时Set-Content会自动为每个数组元素添加换行:

# 读取文件内容(数组形式,每行一个元素)
$fileContents = Get-Content $latestFile.FullName

# 将新字符串插入数组开头(逗号确保$newString作为单个元素加入数组)
$fileContents = ,$newString + $fileContents

# 写入文件,自动保留每行结构
$fileContents | Set-Content $newFilePath

额外优化:使用指定文件名而非任意最新文件

你脚本中定义了$fileName但未实际使用,若只想处理目标文件名的文件,修改$latestFile的获取逻辑:

$latestFile = Get-ChildItem -Path $sourceDirectory -Filter $fileName | Sort-Object LastWriteTime -Descending | Select-Object -First 1

内容的提问来源于stack exchange,提问作者Ruben E Noguera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:57:49