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

PowerShell修改ini文件ProjectPath行无效问题求助

PowerShell修改INI文件行的问题解决

问题原因

你脚本里的foreach ($line in $lines)循环中,$line是原数组元素的副本,修改这个变量不会同步到原数组$lines,所以最终写入文件的还是原始内容。

解决方法

方法1:创建新数组存储修改后的行

通过循环将每一行(修改后的或原始的)添加到新数组,最后写入文件:

# 获取文件内容为行数组
$lines = Get-Content "C:\TEMP\test.ini"
$modifiedLines = @()

foreach ($line in $lines) {
    if ($line.StartsWith("ProjectPath=")) {
        $modifiedLines += "ProjectPath=%USERPROFILE%\Documents"
    } else {
        $modifiedLines += $line
    }
}

# 将修改后的内容写入文件
Set-Content "C:\TEMP\test.ini" $modifiedLines -Force

方法2:用For循环按索引修改原数组

For循环可以直接通过索引访问并修改原数组的元素:

$lines = Get-Content "C:\TEMP\test.ini"

for ($i = 0; $i -lt $lines.Count; $i++) {
    if ($lines[$i].StartsWith("ProjectPath=")) {
        $lines[$i] = "ProjectPath=%USERPROFILE%\Documents"
    }
}

Set-Content "C:\TEMP\test.ini" $lines -Force

方法3:管道+ForEach-Object简化操作(推荐)

直接通过管道流处理每行内容,无需单独存储数组:

Get-Content "C:\TEMP\test.ini" | ForEach-Object {
    if ($_.StartsWith("ProjectPath=")) {
        "ProjectPath=%USERPROFILE%\Documents"
    } else {
        $_
    }
} | Set-Content "C:\TEMP\test.ini" -Force

额外提示

如果需要把%USERPROFILE%解析为实际的用户路径,替换成PowerShell环境变量语法$env:USERPROFILE即可,比如:

"ProjectPath=$env:USERPROFILE\Documents"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:45:54