【问题标题】:How to edit a .property file in powershell如何在 powershell 中编辑 .property 文件
【发布时间】:2016-05-14 14:46:43
【问题描述】:

我有一个如下格式的 application.properties 文件

application.name=some thing
application.version=4.1.0.1
application.list=abc.def, ghi.jkl

现在我的任务是将 mno.pqr 附加到 application.list 我可以使用

阅读它

$AppProps = convertfrom-stringdata (get-content .\application.properties -raw)

我更改了$AppProps 中的Application.list 值。 如何将其保存回原始 Application.properties 文件..?

【问题讨论】:

    标签: properties-file powershell-4.0


    【解决方案1】:

    您可以尝试以下方法:

    $AppProps.GetEnumerator() | % { "$($_.Name)=$($_.Value)" } > .\application.properties
    

    注意> 默认创建 UTF-16 LE 文件(带有 BOM),因此如果您想显式控制编码,请使用 -Encoding 参数通过管道传输到 Out-FileSet-Content反而。

    不幸的是,没有互补的ConvertTo-StringData,因此您必须创建自己的输出格式(哈希表的默认输出格式用作属性文件):

    • ConvertFrom-StringData 返回一个哈希表,所以$AppProps 包含一个。

    • $AppProps.GetEnumerator() 通过管道一一发送哈希表的键/值对([System.Collections.DictionaryEntry] 类型的字典条目)。

      • .GetEnumerator() 调用是必要的,因为 PowerShell 将哈希表视为管道中的一个单个对象。
    • % { "$($_.Name)=$($_.Value)" } 为每个键/值对构造输出字符串。


    注意事项源于使用ConvertFrom-StringData 读取属性文件:

    • 顺序丢失:由于哈希表中的键顺序无法保证,因此在您重写文件时(至少是第一次),属性通常会以不同的顺序出现。

    • cmets 丢失:输入文件中的注释(第一个非空白字符为 # 的行)在读取时会被悄悄跳过,因此在重写文件时会丢失它们。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多