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

如何避免PowerShell替换文本时换行符被替换为问号?

解决批处理中PowerShell修改配置文件时换行符变为问号的问题

问题原因

你的原命令用gc(Get-Content)默认按行读取文件,返回字符串数组,管道输出到sc(Set-Content)时,PowerShell会用系统默认换行符拼接数组元素,再加上编码不匹配,导致原始换行符或字符被损坏,出现问号。你尝试的replace[↵]::escape是错误语法,无法生效。

修正方案

核心是保留原始文件结构和统一编码,以下两种方法任选其一:

方法1:一次性读取文件(推荐)

用-Raw参数读取整个文件为单个字符串,替换后直接写入,完全保留原始换行和格式:

powershell -command "& { $p = Get-Content 'path.txt' -Raw; $configPath = Join-Path $p.Trim() 'GameConfig\SpecificFile.txt'; (Get-Content $configPath -Raw -Encoding UTF8).Replace('<col:Default>','<col:Green>') | Set-Content $configPath -Encoding UTF8 }"

方法2:按行处理并保留换行

如果需要按行操作,使用-NoNewline避免额外换行,并指定编码:

powershell -command "& { $p = Get-Content 'path.txt' -Raw; $configPath = Join-Path $p.Trim() 'GameConfig\SpecificFile.txt'; $lines = Get-Content $configPath -Encoding UTF8; $updatedLines = $lines.Replace('<col:Default>','<col:Green>'); $updatedLines | Set-Content $configPath -Encoding UTF8 -NoNewline }"

关键说明

  • -Raw:避免拆分文件内容,完整保留原始换行符和格式。
  • -Encoding UTF8:确保读取和写入的编码一致,防止字符(包括控制字符)损坏。
  • $p.Trim():移除path.txt中可能存在的换行、空格,保证路径正确。
  • Join-Path:更安全的路径拼接方式,避免手动拼接路径时的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:09:54