1

したがって、複数のtxtファイルでいくつかのtxtブロックを削除する必要があります。ファイルは次のようになります。

Header
Value
Data
   <DefaultValue>
       sdf
         asdfsdf
       asfkfkf
   </DefaultValue>
Data3
Data2
   <DefaultValue>
       sdfdffff
          asdfsasdfddf
       asfkf
   </DefaultValue>**
Dat
End

DefaultValueで始まり/DefaultValue終わる行のブロックを削除する必要があります

結果は次のようになります。

Header
Value
Data
Data3
Data2
Dat
End

残念ながら、これは適切な形式の XML ファイルではないため、XML ノードの削除は機能しません。

助言がありますか?

4

1 に答える 1

2

これを使用して、サードパーティのJoin-String関数を追加する必要性を回避しました。

$filePath = '.\Desktop\new  3.txt'
$text = ""
Get-Content $filePath | % {$text += $_ + "NEWLINE"}
$text = $text -Replace "<Default.+?DefaultValue>",""
$text.Replace("NEWLINE","`r`n")

得た:

Header
Value
Data

Data3
Data2
   **
Dat
End

これを繰り返すには、次のようなことを行います。

Get-ChildItem -Path C:\logs\ -Filter "*.txt" | % {
    $text = ""
    Get-Content $_.FullName | % {$text += $_ + "NEWLINE"}
    $text = $text -Replace "<Default*DefaultValue>",""
    $text.Replace("NEWLINE","`r`n") | Out-File $_.FullName -Force
}

頑張って、データをバックアップし、別のユーザーからのよりエレガントな回答をチェックしてください。

于 2012-08-07T17:43:05.397 に答える