web-dev-qa-db-ja.com

ドライブ上の多くのジッパーを圧縮する方法は?

私はさまざまなもののバックアップの多くのZipファイルを含むハードドライブを持っています。それらは、さまざまな時点でさまざまな一貫性のない方法で圧縮されており、それらの多くは最小限の圧縮設定を使用しています。

同じ(最良の)圧縮設定を使用してドライブ上のすべてのZIPを再圧縮する方法(できれば7Zipを使用)はありますか?

7
Julian Lachniet

以下は、100%成功した同様のタスクに過去に使用したスクリプトで、ドライブ文字またはフォルダーにすることができるソースディレクトリを明示的に指定できる 7Zip の純粋なバッチです。

これにより、最初のルート一時ディレクトリを明示的に指定し、その中にZipファイルの名前からZip拡張子を引いたものに一致する新しいフォルダを作成し、 7Zip アーカイブ操作が完了したらそれを削除することもできます。 Zipファイルごとに For/F ループが繰り返されて処理されます。

脚本

Src=ExtractDir=、およびz7=変数の値を、スクリプトの先頭で環境に必要な値に設定するだけです。残りはうまくいくでしょう。

必要なものは何でも指定できます 7Zip圧縮方法%z7% a ~のように-aoaスイッチの直後の-aoa -m<method_parameters>コマンドの最後に必要なものあなたの要望。

ただし、バッチスクリプトとして実行するには、ロジックをデスクトップ上のテキストドキュメントなどにテキストドキュメントから<something>.cmdとして保存しますファイル| saveオプション。保存したら、それをダブルクリックしてロジックを実行し(または、管理者として実行を右クリックして)、ファイルが期待どおりに操作されたことを確認します。

@ECHO ON
SET Src=X:\
SET ExtractDir=%Src%\tmpExtract007
SET z7="C:\Program Files\7-Zip\7z.exe"

FOR /F "usebackq tokens=*" %%a IN (`DIR /S /B /A-D "%Src%\*.Zip"`) DO (
    IF NOT EXIST "%ExtractDir%\%%~Na" MD "%ExtractDir%\%%~Na"
    ECHO A | %z7% e "%%~Fa" -o"%ExtractDir%\%%~Na" -r
    %z7% a "%%~Fa" "%ExtractDir%\%%~Na\*" -aoa
    RD /Q /S "%ExtractDir%\%%~Na"
)
PAUSE
EXIT

ECHO A |コマンドの前にある%z7% e ~は、出力ディレクトリに存在する既存のファイルを上書きするように指示するのを待つのではなく、上書きするように指示することに注意してください。

enter image description here

また、-aoaコマンドの最後にある%z7% a ~スイッチを使用すると、zipファイル内の既存のファイルをすべて上書きして、実際に削除せずに元のファイルをすべて置き換えるように指示されることに注意してください。 IF EXIST "%%~Fa" DEL /Q /F "%%~Fa"を1行追加する必要がある場合は、このスクリプトに追加するのが非常に簡単な、元のZipファイル全体を事前に作成してください。


その他のリソース

6
Pimp Juice IT

これを実行できる通常のコマンドプロンプト(cmd.exe)の簡単なスクリプトを次に示します。

set Zip7="C:\Program Files\7-Zip\7z.exe"

for %z in (*.Zip) do (
    mkdir tmp
    cd tmp
    %Zip7% x ..\%z
    %Zip7% a ..\%z.7z -r -mx9 *
    cd ..
    rmdir /s /q tmp
)

まず、Zip7変数が7z.exeへのパスで定義されます。次に for 現在のディレクトリ内のすべてのZipファイルを繰り返し処理します。各Zipファイルはtmpディレクトリに抽出され、最大圧縮(-mx9オプション)を使用して7-Zipで再圧縮されます。

これらのコマンドをバッチファイルに入れることができます。この場合、for- loop変数でdouble%を使用します。つまり、%%zの代わりに%zを使用します。

5
Alexey Ivanov

ReZipフリーウェアがその仕事をします: zipada55-bin-win32.Zip 。まず、rezip -comp -int archive.Zipコマンドは、それ以上インストールしなくても公正な仕事をします。さらに優れた圧縮を行うには、Zip、7z、kzip、advzipをダウンロードし、-intオプションなしでReZipを実行する必要があります。コマンドラインオプションのフルセットは次のとおりです。

Options:  -defl     : repack archive only with the Deflate
                        subformat (most compatible)
          -fast_dec : repack archive only with fast decompressing subformats
          -int      : use internal Zip-Ada algorithms only, no external call
          -touch    : set time stamps to now
          -lower    : set full file names to lower case
          -del_comm : delete comment
          -comp     : compare original and repacked archives (paranoid mode)
          -rs=n     : loop many times over a single compression approach
                        having randomization, and keep optimum when size is
                        stable after n attempts in a row
2
Zerte

ハードドライブ上のすべてのZipファイルを検索するPowerShellスクリプトを作成し、見つかったZipアーカイブごとに、すべてのファイルを抽出して、目的の形式で再度圧縮します。

組み込みのZip関数を使用するか、PowerShellから7Zipコマンドラインツールを呼び出すことができます。

0
Peter Hahndorf