gpt4 book ai didi

Powershell INI 编辑

转载 作者:行者123 更新时间:2023-12-04 17:00:27 31 4
gpt4 key购买 nike

我想更改 INI 文件中的一些值。不幸的是,我在 2 个不同的部分有键,它们共享相同的名称但需要不同的值。我的代码使用 Get-IniContent函数来自 PsIni .

示例 INI 文件:

[PosScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1

[ControlScreen]
BitmapFile=C:\Temp\Random.bmp
Bitmap=1

我需要将上述内容更改为以下内容:

[PosScreen]
BitmapFile=C:\Temp\FileC.bmp
Bitmap=1

[ControlScreen]
BitmapFile=C:\Temp\FileD.bmp
Bitmap=1

我使用的 PowerShell 代码似乎有效,但它将每个值都更改为“文件 D”。它显然是对所有内容进行了两次解析,并且每个部分的名称都相同。

$NewFileC = "C:\Temp\FileC.bmp"
$NewFileD = "C:\Temp\FileD.bmp"
$POSIniContent = Get-IniContent "C:\scripts\Update-EnablerImage\WINSUITE.INI"
$BOIniContent = Get-IniContent "C:\scripts\Update-EnablerImage\WINSUITE.INI"

If ($POSIniContent["PosScreen"]["BitmapFile"] -ne $NewFileC) {
Get-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI" |
ForEach-Object {$_ -replace "BitmapFile=.+" , "BitmapFile=$NewFileC" } |
Set-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI"
}

If ($BOIniContent["ControlScreen"]["BitmapFile"] -ne $NewFileD) {
Get-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI" |
ForEach-Object {$_ -replace "BitmapFile=.+" , "BitmapFile=$NewFileD" } |
Set-Content "C:\scripts\Update-EnablerImage\WINSUITE.INI"
}

我的挣扎是如何独立地改变每一个。我是一个脚本新手,所以需要一些帮助。尝试使用条件逻辑(例如 ForEach $line in $INIFile ),但没有运气。

最佳答案

你把事情复杂化了。您可以使用 Get-IniContentOut-IniFile如下:

$ini = Get-IniContent c:\temp\ini.ini 
$ini["posscreen"]["BitmapFile"] = "C:\Temp\FileC.bmp"
$ini | Out-IniFile -FilePath c:\temp\ini2.ini

注意如果要覆盖原文件,必须加上 -ForceOut-IniFile称呼。

关于Powershell INI 编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802043/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com