我试图从一批文件中删除以下字符串:“已将数据库上下文更改为‘SystemLog’。” 通过使用下面的脚本。这适用于包含除特定字符串之外的其他信息的文件,但不适用于仅包含该特定字符串的文件(该字符串将仅保留在文件中)。在这种情况下,为什么它不删除字符串而只返回一个空文件?
包含字符串和附加信息的输入文件(类型 = RPT 文件):
将数据库上下文更改为“SystemLog”。
System_Identifier_DevLog 2023-12-13 时间 操作 549 个操作已完成
仅包含特定字符串的输入文件(类型 = RPT 文件)(它在字符串下方包含一个新行):
将数据库上下文更改为“SystemLog”。
我使用的代码:
$files=Get-ChildItem -Path "C:\SQL_SHM\Test2\" -Recurse -File | ForEach-Object {$file = $_.FullName (Get-Content $file ) | Where-Object {$_ -notmatch "Changed database context to 'SystemLog'."} | Set-Content $file } #remove unnecessary text