35

Pythonスクリプトで7-Zipアーカイブを抽出したいと思います。抽出の詳細(私の場合は巨大です)を吐き出すことを除いて、正常に動作します。

抽出中にこの冗長な情報を回避する方法はありますか?に対する「サイレント」コマンドラインオプションが見つかりませんでした7z.exe

私の命令は

7z.exe -o some_dir x some_archive.7z
4

14 に答える 14

42

同じものを探しているときにこれに出くわしましたが、自分で解決しました!コマンドがWindows/DOSで処理されると仮定すると、より簡単な解決策は、コマンドを次のように変更することです。

7z.exe -o some_dir x some_archive.7z > nul

つまり、出力を画面ではなくnullファイルに送信します。

または、出力をDOSの「検索」コマンドにパイプして、特定のデータのみを出力することもできます。

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

これにより、個々のファイル処理は削除されますが、操作の種類に関係なく、操作全体の要約が生成されます。

于 2012-07-24T11:18:33.850 に答える
12

1 つの可能性は、子プロセスを で生成することですpopen。そのため、その出力は親に返されて処理/表示されます (必要な場合)、または完全に無視されます (でpopenオブジェクトをstdout=PIPE作成stderr=PIPEし、子から出力を取得できるようにします)。 .

于 2010-09-22T23:24:18.447 に答える
7

彼らが言ったように、画面いっぱいのメッセージのほとんどを非表示にするには... some_archive.7z |を使用できます。FIND /V 「圧縮中」ですが、その「FIND」は、その単語を含むエラー メッセージも削除します。あなたは警告されません。その「FIND」も、新しい 7-zip バージョンのために変更する必要がある場合があります。

7-zip には、強制的な詳細出力、無音モードなし、stderr と stdout(*) の混合、Unix パーミッションの保存などがあります。たとえば、「tar+bzip2」または「zip」です。

(*) 「アップストリーム (Igor Pavlov) は、何度か依頼されたにもかかわらず、メッセージの異なる出力を作成することを望んでいません:(」http://us.generation-nt.com/answer/bug-346463- p7zip-stdout-stderr-help-166693561.html - 「イゴール・パブロフはこの振る舞いを変えたくない」http://sourceforge.net/tracker/?func=detail&aid=1075294&group_id=111810&atid=660493

于 2012-10-26T20:09:17.560 に答える
3

7zip には、コマンド ライン抽出用の明示的な「quiet」または「silent」モードがありません。

popen を使用して子プロセスを生成する可能性があるため、その出力は親プロセスに返されて処理/表示されるか (必要な場合)、完全に無視されます (stdout=PIPE および stderr=PIPE を使用して popen オブジェクトを作成し、子から出力を取得します)。

それ以外の場合は、これを試してください:

%COMSPEC% /c "%ProgramFiles%\7-Zip\7z.exe" ...
于 2012-12-03T19:24:41.963 に答える
2

これ| FINDは、意味のないテキストを表示せずに何が起こったかを示す良い代替手段です。

于 2012-07-24T11:41:10.723 に答える
0

上記の Fr0sT が語ったように、 -ba スイッチは有効なもののみを出力します (少なくとも、私が試していたリスト オプションでは)。7z.exe l アーカイブ名.zip

7z.exe l -ba アーカイブ名.zip

特にスクリプトの出力を解析するために、大きな違いがありました。何も変更する必要はありません。バージョン 19 では -ba スイッチを使用するだけです。これも上の方から言われました。私はコメントできないので、答えを出しています。

于 2020-10-13T15:54:11.270 に答える