使用带有用户输入的PowerShell覆盖多个文件中的特定行

时间:2016-08-10 06:03:01

标签: powershell

我试图让我的PowerShell脚本读取多个文件夹中不同.ctl文件的特定第8行,并使用预制文本和用户在文本框中输入的内容覆盖它。

PowerShell脚本:

$handler_button3_Click={
if ($textbox1.TextLength -eq 0)
{
    $listBox1.Items.Add("Please Register your Release Number!")
}else{
    #saving the number in releasenr
    $releasenr = $textbox1.Text

    #TODO: Loop which goes into every file on different Folders and replaces
    #line 8 in all .ctl files with following text:     "rel_nr    constant "$releasenr""

    $listBox1.Items.Clear()
    $listBox1.Items.Add("Release Number has been overwritten")
    $listBox1.Items.Add("You can now proceed your Upload")
}
}

有没有办法使用 for loop 来覆盖当前文件夹中的foreach文件?

1 个答案:

答案 0 :(得分:2)

使用Get-ChildItem cmdlet检索文件,使用ForEach-Object cmdlet对其进行迭代,使用Get-Content读取文件内容,覆盖特定行,最后写入文本使用Set-Content cmdlet返回文件:

Get-ChildItem 'yourFolder' -Filter '*.ctl' | ForEach-Object {
    $content = Get-Content $_
    $content[7] = 'rel_nr    constant "{0}"' -f $releasenr
    $content | Set-Content -Path $_.FullName
}