0

Powershell と 7zip を使用して .tgz アーカイブを抽出しています。7zip には強制的な冗長モードがあり、画面を汚します。エラーメッセージを表示したいだけです。FINDで標準メッセージをすでに削除しました:

コード:

  Write-Host "Extracting "$strArgument

  # extract tgz to tar
  & "$7z" x "-y" $strArgument | FIND /V "ing  " | FIND /V "Igor Pavlov" | FIND /V "Processing " | FIND /V "Everything is Ok" | FIND /V "Folders: " | FIND /V "Files: " | FIND /V "Size: " | FIND /V "Compressed: " | FIND /V "Processing archive: "

  # path to .tar
  $strArgument = $strArgument.Replace(".tgz", ".tar")
  $strArgument = $strArgument.Replace("i\data\", "")

  # extract tar to file
  #Write-Host $strArgument
  & "$7z" x "-y" $strArgument | FIND /V "ing  " | FIND /V "Igor Pavlov" | FIND /V "Processing " | FIND /V "Everything is Ok" | FIND /V "Folders: " | FIND /V "Files: " | FIND /V "Size: " | FIND /V "Compressed: " | FIND /V "Processing archive: "

これにより、空の行がたくさんある出力が得られます。

Extracting  Q:\mles\etl-i_test\i\data\divider-bin.tgz










Extracting  Q:\mles\etl-i_test\i\data\divider-conf.tgz
...

しかし、私はただ欲しい:

Extracting  Q:\mles\etl-i_test\i\data\divider-bin.tgz
Extracting  Q:\mles\etl-i_test\i\data\divider-conf.tgz

ストリームから空白行を削除するにはどうすればよいですか? 強力な FIND スイッチはありますか?

4

2 に答える 2

1

私が知っている最も簡単な方法は、結果を -match で実行し、空白以外を含まないものを除外することです:

Write-Host "Extracting "$strArgument

  # extract tgz to tar
  & "$7z" x "-y" $strArgument | FIND /V "ing  " | FIND /V "Igor Pavlov" | FIND /V "Processing " | FIND /V "Everything is Ok" | FIND /V "Folders: " | FIND /V "Files: " | FIND /V "Size: " | FIND /V "Compressed: " | FIND /V "Processing archive: "

  # path to .tar
  $strArgument = $strArgument.Replace(".tgz", ".tar")
  $strArgument = $strArgument.Replace("i\data\", "")

  # extract tar to file
  #Write-Host $strArgument
  (& "$7z" x "-y" $strArgument | FIND /V "ing  " | FIND /V "Igor Pavlov" | FIND /V "Processing " |   ND /V "Everything is Ok" | FIND /V "Folders: " | FIND /V "Files: " | FIND /V "Size: " | FIND /V "Compressed: " | FIND /V "Processing archive: ") -match '\S'
于 2013-03-28T10:55:37.830 に答える
1

findにはそのようなスイッチはありませんが、findstr代わりに正規表現を使用できます。

... | findstr /r /v "^$"
于 2013-03-28T12:04:52.917 に答える