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

我试图让我的Power
Shell脚本读取多个文件夹中不同.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循环来覆盖当前文件夹中的foreach文件?

最佳答案 使用
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
}
点赞