如何在 powershell 中编辑 .属性 文件
How to edit a .property file in powershell
我有一个 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 文件..?
您可以尝试以下方法:
$AppProps.GetEnumerator() | % { "$($_.Name)=$($_.Value)" } > .\application.properties
请注意,>
默认创建 UTF-16 LE 文件(带 BOM),因此如果您想明确控制编码,请通过管道传输到 Out-File
或 Set-Content
使用 -Encoding
参数代替。
不幸的是,没有补充 ConvertTo-StringData
,因此您必须创建自己的输出格式(哈希表的默认输出格式 不 作为属性文件):
ConvertFrom-StringData
returns 一个哈希表,所以 $AppProps
包含一个。
$AppProps.GetEnumerator()
通过管道一个接一个地发送哈希表的 key/value 对([System.Collections.DictionaryEntry]
类型的字典条目)。
.GetEnumerator()
调用是必要的,因为 PowerShell 将哈希表视为管道中的 单个 对象。
% { "$($_.Name)=$($_.Value)" }
为每个 key/value 对构造输出字符串。
注意事项 源于使用 ConvertFrom-StringData
读取属性文件:
顺序丢失:由于在哈希表中不能保证键的顺序,所以当您重写文件时(至少是第一次),属性通常会以不同的顺序出现。
注释丢失:输入文件中的注释(第一个非空白字符为 #
的行)在阅读时被悄悄跳过,因此当您重写时会丢失它们文件。
我有一个 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 文件..?
您可以尝试以下方法:
$AppProps.GetEnumerator() | % { "$($_.Name)=$($_.Value)" } > .\application.properties
请注意,>
默认创建 UTF-16 LE 文件(带 BOM),因此如果您想明确控制编码,请通过管道传输到 Out-File
或 Set-Content
使用 -Encoding
参数代替。
不幸的是,没有补充 ConvertTo-StringData
,因此您必须创建自己的输出格式(哈希表的默认输出格式 不 作为属性文件):
ConvertFrom-StringData
returns 一个哈希表,所以$AppProps
包含一个。$AppProps.GetEnumerator()
通过管道一个接一个地发送哈希表的 key/value 对([System.Collections.DictionaryEntry]
类型的字典条目)。.GetEnumerator()
调用是必要的,因为 PowerShell 将哈希表视为管道中的 单个 对象。
% { "$($_.Name)=$($_.Value)" }
为每个 key/value 对构造输出字符串。
注意事项 源于使用 ConvertFrom-StringData
读取属性文件:
顺序丢失:由于在哈希表中不能保证键的顺序,所以当您重写文件时(至少是第一次),属性通常会以不同的顺序出现。
注释丢失:输入文件中的注释(第一个非空白字符为
#
的行)在阅读时被悄悄跳过,因此当您重写时会丢失它们文件。