gpt4 book ai didi

powershell - PowerShell中的INI文件解析

转载 作者:行者123 更新时间:2023-12-02 23:46:48 26 4
gpt4 key购买 nike

我正在 PowerShell 中解析简单(无部分)INI 文件。这是我想出的代码,有什么办法可以简化它吗?

convertfrom-stringdata -StringData ( `
get-content .\deploy.ini `
| foreach-object `
-Begin { $total = "" } `
{ $total += "`n" + $_.ToString() } `
-End { $total } `
).Replace("\", "\\")

最佳答案

在互联网上搜索该主题后,我找到了一些解决方案。所有这些都是手动解析文件数据,因此我放弃了尝试制作标准 cmdlet 来完成这项工作。有一些奇特的解决方案,如 this支持书写场景。

还有更简单的代码,只要我不需要编写支持,我就选择以下非常优雅的代码片段:

Function Parse-IniFile ($file) {
$ini = @{}

# Create a default section if none exist in the file. Like a java prop file.
$section = "NO_SECTION"
$ini[$section] = @{}

switch -regex -file $file {
"^\[(.+)\]$" {
$section = $matches[1].Trim()
$ini[$section] = @{}
}
"^\s*([^#].+?)\s*=\s*(.*)" {
$name,$value = $matches[1..2]
# skip comments that start with semicolon:
if (!($name.StartsWith(";"))) {
$ini[$section][$name] = $value.Trim()
}
}
}
$ini
}

这个是Jacques Barathon的。

更新感谢 Aasmund Eldhuset 和 @msorens 的增强功能:空格修剪和注释支持。

更新 2 跳过任何 name=value 对,其中 name starts with a semicolon ; which are comment lines 。将 $ini [$section] = @{} 替换为 $ini[$section] = @{}

关于powershell - PowerShell中的INI文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417798/

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