我试图让我的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文件?
答案 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
}