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

关于PowerShell追加字符串至文本时产生换行的问题咨询

PowerShell脚本追加字符串出现换行的问题解决

我来帮你分析下这个问题哈~

问题根源

你当前的脚本里,Foreach-Object的处理逻辑有个小问题:当匹配到包含;stylesheets的行时,你写的$_ if ($_ -match ";stylesheets") { ";history" }会被PowerShell拆成两个独立的输出动作——先输出原行$_,然后单独输出;history。这两个输出是彼此独立的对象,所以Set-Content会把它们分别作为一行写入文件,自然就出现了换行分隔的情况,达不到你要的连续拼接效果。

修正后的脚本

要实现把;history直接追加到目标行的末尾,你需要把原行和追加字符串拼接成一个整体再输出,而不是分开输出。修改后的脚本如下:

(Get-Content K:\Temp\test.properties) | Foreach-Object {
    if ($_ -match ";stylesheets") {
        "$_;history"  # 将原行与追加字符串拼接为单个字符串输出
    } else {
        $_  # 不匹配的行保持原样输出
    }
} | Set-Content K:\Temp\test.properties

更精准的优化方案(可选)

如果担心原行末尾可能有空格、注释或者其他额外字符,或者只想匹配行尾的;stylesheets(避免误匹配行中间的相同内容),可以用-replace来实现更精准的替换:

(Get-Content K:\Temp\test.properties) | Foreach-Object {
    $_ -replace ";stylesheets$", ";stylesheets;history"
} | Set-Content K:\Temp\test.properties

这里的$是正则表达式的行尾锚点,确保只替换行末尾的;stylesheets,安全性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:32