如何更改 cmd 脚本中一行的值?

时间:2021-01-25 16:11:57

标签: powershell

我有这个 cmd 脚本:

REM Environment-Variables which can be used for Programs
REM ----------------------------------------------------------------
set SDENVDataPool=13
set SDENVDataPoolPath=C:\ProgramData\

必须更改值 13。我试过这个解决方案:

$line = Get-Content .\script.cmd | Select-String -Pattern "set SDENVDataPool" | Select-Object -ExpandProperty Line
$content = Get-Content .\script.cmd
$content | ForEach-Object {$_ -replace $line, "set SDENVDataPool=14"} | Set-Content .\script.cmd

问题是无法正确读取该行。我得到了整个文件。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

在您的 Select-String -Pattern "set SDENVDataPool" 中,您返回的不止一行 set SDENVDataPool=13 & set SDENVDataPoolPath=C:\ProgramData\ 匹配该模式。 如果您将 Pattern 更改为 Select-String -Pattern "set SDENVDataPool=",您应该正确返回一个匹配项,然后您可以在脚本的其余部分使用该匹配项在运行此部分时设置内容

$content | ForEach-Object {$_ -replace $line, "set SDENVDataPool=14"} | Set-Content .\script.cmd