将行添加到多个Notes.ini文件中

时间:2016-01-28 22:51:27

标签: powershell ini

我有一个PowerShell脚本,我想运行它来添加两行' IM_DISABLED' &安培; ' IM_NO_SETUP = 1'到每个INI文件的末尾。

我想针对文件夹H:\test运行它,该文件夹的子文件夹各包含一个文件notes.ini

我有以下使用-replace工作的PowerShell。但是,我无法使用替换,只需要在每个INI的末尾添加两个新行。

$places = 'h:\test'
$places | Get-ChildItem -Recurse -Include Notes.ini | ForEach-Object {
    (Get-Content $_) -replace 'KitType=1', "`nKitType=1`r`nIM_DISABLED=1`r`nIM_NO_SETUP=1" |
        Set-Content $_
    'Processed: {0}' -f $_.FullName
}

1 个答案:

答案 0 :(得分:2)

如果你有PowerShell v3或更新版本,你只需使用Add-Content

$places = 'h:\test'
$lines  = 'IM_DISABLED', 'IM_NO_SETUP=1'
Get-ChildItem $places -Recurse -Include Notes.ini | ForEach-Object {
  Add-Content $_.FullName -Value $lines
  'Processed: {0}' -f $_.FullName
}

在早期版本中,您可以将Out-File与参数-Append一起使用。请注意,如果文件不是Unicode编码,则还需要定义编码。

$places = 'h:\test'
$lines  = 'IM_DISABLED', 'IM_NO_SETUP=1'
Get-ChildItem $places -Recurse -Include Notes.ini | ForEach-Object {
  Out-File $_.FullName -InputObject $lines -Append -Encoding Ascii
  'Processed: {0}' -f $_.FullName
}

另一种选择是创建一个Get-Content输出数组和要添加的行,并将其写回Set-Content文件:

$places = 'h:\test'
Get-ChildItem $places -Recurse -Include Notes.ini | ForEach-Object {
  $f = $_.FullName
  (Get-Content $f), 'IM_DISABLED', 'IM_NO_SETUP=1' | Set-Content $f
  'Processed: {0}' -f $f
}
相关问题