7-Zip アーカイブをPythonスクリプトで抽出します。抽出の詳細(これは私の場合は巨大です)。
抽出中にこの冗長な情報を回避する方法はありますか? 7z.exe
への「サイレント」コマンドラインオプションが見つかりませんでした。
私のコマンドは
7z.exe -o some_dir x some_archive.7z
可能性の1つは、 popen
で子プロセスを生成し、その出力が親に戻って処理/表示される(必要な場合)か、完全に無視される(stdout=PIPE
およびstderr=PIPE
でpopen
オブジェクトを作成する)ことです。子から出力を取得できるようにします)。
私は同じものを探しているときにこれに出くわしましたが、私はそれを自分で解決しました!コマンドがWindows/DOSで処理されると仮定すると、より簡単な解決策はコマンドを次のように変更することです。
7z.exe -o some_dir x some_archive.7z > nul
つまり、画面ではなくnullファイルに出力を向けます。
または、DOSの「find」コマンドに出力をパイプして、特定のデータのみを出力することもできます。つまり、
7z.exe -o some_dir x some_archive.7z | FIND "ing archive"
これにより、次の出力が生成されます。
アーカイブsome_archive.7zの作成
または
アーカイブsome_archive.7zの更新**
私の最終的な解決策は、コマンドを
... some_archive.7z | FIND /V "ing "
注ダブルスペース 'ing'の後。これにより、次の出力が生成されました。
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Scanning
Updating some_archive.7z
Everything is Ok
これにより、個々のファイル処理が削除されますが、操作の種類に関係なく、操作全体の概要が生成されます。
@Matthewの答えとこの答えを展開 https://superuser.com/questions/194659/how-to-disable-the-output-of-7-Zip 私は代わりにFINDSTRを使用していますfindのように、複数の行を連鎖させて除外したり、空白行を追加したりできます。
7za.exe a test1.Zip .\foldertozip | FINDSTR /V /R /C:"^Compressing " /C:"Igor Pavlov" /C:"^Scanning$" /C:"^$" /C:"^Everything is Ok$"
/ Cを使用して、スペースをスペースにします。それ以外の場合は、この単純なバージョンのように、除外する複数の単語間の区切り文字になります。
FINDSTR /V "Compressing Pavlov Scanning Everytyhing"
(新しいバージョンで言葉遣いが変わる場合、または「Compressing」という単語で始まる有用な行がある場合、同じ警告が存在し、期待どおりに機能しません)。
7Zipには、コマンドライン抽出用の明示的な「静かな」または「サイレント」モードがありません。
1つの可能性は、popenを使用して子プロセスを生成し、その出力が親に戻って処理/表示される(必要な場合)か、完全に無視される(stdout = PIPEおよびstderr = PIPEでpopenオブジェクトを作成できるようにすることです)子から出力を取得します)。
そうでなければ、これを試してください:
%COMSPEC% /c "%ProgramFiles%\7-Zip\7z.exe" ...
| FIND
は、意味のないテキストを表示せずに何が起こったかを示すための優れた代替手段です。
Powershellから7-Zip.exeを実行していて、エラーのみを表示したい場合は、次のようなものを試すことができます。
7-Zip.exe u <Target> <Source> | Select-String "Error" -Context 10
これは、エラー固有の出力をキャプチャするために、「エラー」メッセージ行と周囲の10行(または任意の数)のみを表示します。
7-Zipにはそのようなオプションはありません。さらに、圧縮された各ファイルで印刷された行は、改行なしで同じ場所に表示されることになっており、前の行は消去され、クールな効果があります。残念ながら、一部のコンテキスト(Jenkins ...)では、コンソールにフラッディングする複数の行が生成されました。
NUL
(windows)はおそらく1つのソリューションです。
7-Zip.exe -o some_dir x some_archive.7z>NUL