Powershell 每周替换多个文件中的字符串

Powershell 每周替换多个文件中的字符串,powershell,replace,Powershell,Replace,我必须每周替换多个文件中的某个字符串。我试图使用PowerShell简化该过程,但必须更换的行如下: extract_mdp_staging_error(149); 其他文件看起来相同,但ex的字符串不同 extract_kdp_staging(149); extract_zub_staging_error(149); ... 有没有办法告诉我的脚本只需搜索()中的文本部分并用用户输入替换它?因为我不能使用硬编码搜索,因为下周将不会有149个,而是150个,以此类推 编辑 我一直在使用一个脚

我必须每周替换多个文件中的某个字符串。我试图使用PowerShell简化该过程,但必须更换的行如下:

extract_mdp_staging_error(149);
其他文件看起来相同,但ex的字符串不同

extract_kdp_staging(149);
extract_zub_staging_error(149);
...
有没有办法告诉我的脚本只需搜索()中的文本部分并用用户输入替换它?因为我不能使用硬编码搜索,因为下周将不会有149个,而是150个,以此类推

编辑 我一直在使用一个脚本替换另一个应用程序中使用PowerShell的文件中的整行,但我不知道如何对其进行编码,因此它只替换括号中的部分。PowerShell脚本:

Get-ChildItem C:\Users\mosermich\Desktop\Extractor\Ressources -Filter '*.sql' -ErrorAction Stop | ForEach-Object {
        $content = Get-Content $_.Fullname
        $content[7] = '   rel.nr sqlldr {0}' -f $releasenr
        $content | Set-Content -Path $_.FullName
        }
下面是一个文件,我需要在其中替换第2行()中的数字:

begin
extract_zdlb_staging(149);
commit;
end;
/ 
quit; 

我会使用一个带有正向前瞻和向后前瞻的
regex

$userInput = 250
$filePath = 'yourFilePath'

$content = Get-Content $filePath
$content -replace '(?<=\()(\d+)(?=\))', $userInput | Set-Content $filePath
$userInput=250
$filePath='yourFilePath'
$content=获取内容$filePath

$content-replace'(?这应该可以使用regex。您有任何示例吗?抱歉,我从来没有真正使用过regex。但是我发布了我过去的powershell脚本和一个需要替换的示例文件。希望这就是您的意思。感谢您的快速回答和解释!(在过去的几天里,你在我的PowerShell问题上帮了我很多忙)。如果我使用正则表达式,它实际上只会影响()中的数字,但不会在()中插入新数字。我做错了什么吗?欢迎:-)。如果你运行我的第一个脚本,它不是在括号内放了250个吗?我在一个全新的文件中尝试了它,并以管理员的身份运行。它删除了括号内的旧数字,但没有用新数字填充。奇怪。这在这里工作正常。你使用的是哪个PowerShell版本?哦,我的天啊…很抱歉,我刚刚删除了所有旧文件和重写。显然我在文件中拼错了一些东西…现在它工作得很好…很抱歉耽误了你的时间…我的错,但还是非常感谢你!
(?<=\()(\d+)(?=\))
$userInput = 250 # The number you want to put in the parentheses
Get-ChildItem C:\Users\mosermich\Desktop\Extractor\Ressources -Filter '*.sql' -ErrorAction Stop | 
    ForEach-Object {
        $content = Get-Content $_.Fullname
        $content -replace '(?<=\()(\d+)(?=\))', $userInput | Set-Content $_.Fullname
    }