この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 11568|答える: 2

[出典] [実戦]。 NET/C#はコマンドライン経由で7zの復式を呼び出します

[リンクをコピー]
2022年4月30日 17:46:24に投稿 | | | |
要件:プロジェクトはアップロードされた圧縮パッケージを解凍または圧縮する必要があります。これは一般的にWinRARで実現可能ですが、実装にはプログラミング手法が必要であり、手動で解凍することは不可能です。 WinRARは有料なので、.NET/C#を使ってコマンドライン操作を行い、7zを呼び出してニーズを満たすことができます。

復習:

.net/c# でZIPパッケージ内のファイル情報を取得するために
https://www.itsvse.com/thread-4831-1-1.html

Java encapsulation zip unzip メソッド
https://www.itsvse.com/thread-7750-1-1.html

C#はICSharpCode.SharpZipLib.dllを使ってファイルやフォルダを圧縮・解凍します
https://www.itsvse.com/thread-3726-1-1.html
7-Zipは高い圧縮率を持つファイルアーカイブです。 7-Zipはオープンソースかつフリーウェアです。 ほとんどのコードはGNU LGPLの下でライセンスされています。 コードの一部はBSD 3用語の下でライセンスされています。 コードの一部にはunRARライセンス制限もあります。

ダウンロードアドレス:ハイパーリンクのログインが見えます。ダウンロードおよびインストールの手順は省略されています(この記事は:D:\360Downloadsディレクトリの下にインストールされています)

7-Zipコマンドラインのパラメータは以下の通りです:


7-Zip 21.07 (x64) : 著作権 (c) 1999-2021 イゴール・パブロフ : 2021-12-26

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : アーカイブにファイルを追加
  b:ベンチマーク
  d : アーカイブからファイルを削除
  e:アーカイブからファイルを抽出(ディレクトリ名を使わず)
  h : ファイルのハッシュ値を計算する
  i:サポートされているフォーマットに関する情報を表示する
  l : アーカイブの内容一覧
  rn:アーカイブ内のファイル名変更
  t:アーカイブのテスト整合性
  u : ファイルをアーカイブに更新してください
  x : フルパスを持つeXtractファイル

<Switches>
  -- : 停止スイッチと@listfile解析
  -ai[r[-|0]]{@listfile|! wildcard} : アーカイブを含める
  -ax[r[-|0]]{@listfile|! wildcard} : eXclude archives
  -ao{a|s|t|u} : set Overwrite mode
  -an : archive_nameフィールドを無効化
  -bb[0-3] : 出力ログレベルを設定し
  -bd : 進行状況表示を無効化
  -bs{o|e|p}{0|1|2} : output / error/progress line の出力ストリームを設定
  -bt : 実行時間の統計を表示
  -i[r[-0]]{@listfile|! wildcard} : ファイル名を含める
  -m{Parameters} : セット圧縮方法
    -mmt[N] : 設定されたCPUスレッド数
    -mx[N] : 圧縮レベル設定:-mx1(最速)... -mx9(ウルトラ)
  -o{Directory} : set Output directory
  -p{Password} : パスワードを設定してください
  -r[-|0] : 名前検索用の再帰サブディレクトリ
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8|WIN|DOS} : コンソールの入出力用に を 設定
  -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
  -scrc[CRC32|CRC64|SHA1|SHA256|*] : x, e, h コマンドのハッシュ関数を設定してください
  -SDEL : 圧縮後にファイルを削除
  -seml[.] : メールでアーカイブを送信
  -sfx[{name}] : SFXアーカイブを作成
  -si[{name}] : stdinからデータを読み取る
  -slp : Large Pages mode を設定する
  -slt : l(リスト)コマンドの技術情報を表示する
  -snh : ハードリンクをリンクとして保存します
  -SNL : 記号リンクをリンクとして保存
  -sni : NTセキュリティ情報を保存
  -sns[-]:NTFS代替ストリームを保存します
  -so : statdout にデータを書き込む
  -spd : ファイル名のワイルドカードマッチングを無効にする
  -SPE : extractコマンドのルートフォルダの重複を排除する
  -SPF :完全に限定されたファイルパスを使用する
  -ssc[-]:センシティブ・ケースモードを設定
  -sse:入力ファイルが開かない場合はアーカイブ作成を停止してください
  -ssp : アーカイブ中にソースファイルの最終アクセス時間を変更しないでください
  -ssw : compress shared files
  -stl : 直近に修正されたファイルからアーカイブタイムスタンプを設定する
  -stm{HexMask} : set CPU thread affinity mask (16進数)
  -stx{Type} : archive type を除外する
  -t{Type} : アーカイブの種類をセットします
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
  -v{Size}[b|k|m|g] : Create volumes
  -w[{path}] : 作業ディレクトリを割り当てる。 空のパスとは一時的なディレクトリを意味します
  -x[r[-|0]]{@listfile|! wildcard} : eXclude ファイル名
  -y : すべてのクエリで「はい」と仮定します
7zでの圧縮フォルダー

コマンドは以下の通りです:


-sdelパラメータの追加により、圧縮が完了するとzhフォルダは自動的に削除されます。 以下のようにWinRARを使って圧縮ファイルをテストしてみましょう。



7zでファイルを解凍してください

コマンドは以下の通りです:


減圧は下図のように完了します:



.NET/C# はコマンドライン経由で7zの復式を呼び出します

.NET/C#コードを使ってコマンドラインをどうやって実行すればいいですか? コードは以下の通りです:

(終わり)




先の:65のソースコードダウンロードサイト
次に:[実戦]。 NET/C#はメソッドのタイムアウト時間を設定します
 地主| 2022年4月30日 17:49:29に投稿 |
解凍ファイル(すべての圧縮ファイルは元のディレクトリ構造を維持しずに同じディレクトリに解凍されます)
# ファイルを現在のディレクトリに解凍する
7z e archive.zip
# ファイルをe:\testunzipディレクトリに解凍
7z e archive.zip -oe:\testunzip
# すべてのPNGファイルをe:\testunzipディレクトリに解凍
7z e archive.zip -oe:\testunzip *.png -r

x ファイルを解凍(元のディレクトリ構造のまま)する
# ファイルを現在のディレクトリに解凍する
7Z×archive.zip
# ファイルをe:\testunzipディレクトリに解凍
7z x archive.zip -oe:\testunzip
# すべてのPNGファイルをe:\testunzipディレクトリに解凍
7z x archive.zip -oe:\testunzip *.png -r

l パッケージ内のすべてのファイルのリストを見る
7z l archive.zip

-ao 同名のファイルの扱い方
# -AOAが同名のファイルを上書きします
7z x archive.zip -AOA
# -aos 同名のファイルは飛ばす
# -アオはアーカイブを同じ名前で改名する
# -AOTは、同じ名前の抽出ディレクトリ内のファイル名を変更する

d パッケージ内のファイルを削除してください
# すべてのファイルを削除してください。.bakの接尾辞がarchive.zip
7z d archive.zip *.bak -r

RNはパッケージ内のファイル名を変更します
# ファイル名をフォルダ1.png 1_new.png 2.png変更2_new.png
7z rn archive.7z 1.png 1_new.png 2.png folder\2_new.png
2022年4月30日 20:05:18に投稿 |
学ぶことを学びましょう。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com