如何用PowerShell在首空行前的每行添加#前缀
修正后的PowerShell脚本
$Lines = Get-Content -Path C:\Users\mike\Downloads\test1.txt $OutputPath = "C:\Users\mike\Downloads\test2.txt" $addHash = $true $processedLines = @() foreach ($Line in $Lines) { if ($addHash) { # 给当前行添加#前缀 $processedLine = "# $Line" $processedLines += $processedLine # 碰到空行就关闭前缀添加开关 if ($Line.Trim() -eq '') { $addHash = $false } } else { # 开关关闭后直接保留原行内容 $processedLines += $Line } } # 一次性写入处理后的内容,比循环追加更高效 $processedLines | Out-File -Path $OutputPath
逻辑说明
- 新增
$addHash变量作为控制开关,初始设为$true,表示需要给行添加前缀。 - 遍历每行时:
- 开关开启状态下,先给行添加
#前缀,同时检查该行是否为空行(用Trim()是为了兼容行内只有空格/制表符的情况),如果是空行就将开关设为$false,后续行不再添加前缀。 - 开关关闭后,直接保留原行内容,不再做修改。
- 开关开启状态下,先给行添加
- 最后一次性写入所有处理后的行,避免循环追加带来的性能损耗和潜在写入异常。
如果你的空行是完全无任何字符(连空格都没有)的情况,可以把$Line.Trim() -eq ''替换为$Line -eq '',适配实际文件格式。
内容的提问来源于stack exchange,提问作者Dirk Pitt
相关产品推荐
相关产品推荐

