web-dev-qa-db-ja.com

7-Zipにたくさんのフォルダを作成させる方法

800x600ピクセルに切り抜かなければならないたくさんの写真を受け取りました。それは簡単にできましたが、今は家族がすべてを見ることができるようにアップロードする必要があります。

実はこれは写真で500MBです。私は、それぞれがほぼ同量の画像を含む個別のフォルダを単純に圧縮することにしました。この方法で毎日カップルをアップロードできます。これを手動で行うのは非常に長くて大変な仕事です。 7-Zipで各フォルダーを個別に処理する方法はあるのでしょうか。

それを行うにはバッチファイルが必要だと思いますが、私はそれが得意ではありません。すべてを1つのフォルダーに入れました。さまざまなサブフォルダで、画像が配置されています。必要なのは、そのフォルダーの内容を圧縮することです。フォルダーと一緒にZip圧縮できるかどうかはわかりません。 PHPにはZipモジュールがあるので、これを使ったことがないので、Zipのコンテンツがを含むフォルダであるという事実を処理できるかどうかわかりませんアイテムだけでなく、アイテム。

18
KdgDev

作業ディレクトリがMy Picturesディレクトリであるコマンドプロンプトから実行すると、このコマンドは各サブディレクトリの内容のZipファイルを作成し、すべてのZipファイルをMy Picturesディレクトリに残します。

編集:名前にスペースを含むディレクトリを許可するために必要な引用符を追加しました。

for /D %%d in (*.*) do 7z a -tzip "%%d.Zip" "%%d"

Also:次のバージョンでは、Zipファイル内のサブディレクトリではなく、ルートにファイルが配置されます。

for /D %%d in (*.*) do 7z a -tzip "%%d.Zip" ".\%%d\*"

Windows 7以降

for /D %d in (*.*) do 7z a -tzip "%d.Zip" "%d"

または

for /D %d in (*.*) do 7z a -tzip "%d.Zip" ".\%d\*"
26
eleven81

コマンドラインを機能させることができず、代わりにWinRARをダウンロードしました mtone は正しかった-WinRARには、複数のフォルダーを個別のZipファイルにZipするオプションがあります。

例えば。 C:\Files\Fables 01からC:\Files\Fables 01.ZipC:\Files\Fables 02からC:\Files\Fables 02.Zip

WinRARを使用して、Zip処理するフォルダを含むフォルダを開き、次の手順に従います。

  • 圧縮/再配置するすべてのフォルダを選択します
  • 「追加」をクリックするか、 Alt+A またはコマンド-> "アーカイブにファイルを追加"
  • RARまたはZipを選択します
  • 「ファイル」タブに移動します
  • [アーカイブ]ボックスで[各ファイルを個別のアーカイブに配置する]をオンにします

他に修正したい設定がある場合は、[OK]をクリックして、複数のフォルダの複数のZipファイルをブームにします。これは、コマンドライン7Zipよりもはるかに簡単に機能しました。

7
user134042

Eleven81の回答のわずかな更新:以下のコードは、複数のアイテムをドロップできるバッチファイルを作成します。

@echo off
if [%1]==[] goto :eof
:loop
7z a -tzip "%~1.Zip" "%~1"
shift
if not [%1]==[] goto loop

このバッチファイルは、レジストリを介してコンテキストメニューに追加できます。

  1. [HKEY_CLASSES_ROOT\Folder\Shell]の下に新しいキーを作成し、cmd1と呼びます
  2. 文字列値を編集して、「Batch Zip」と名付けます。
  3. この下に別の新しいキーを作成し、コマンドを呼び出します
  4. 二重エスケープスラッシュを使用して、この値をパスに変更します

したがって、たとえば、私のエントリは「C:\ Users\Rory\Dropbox\_apps\batch_Zip.bat」「%1」です。

これを実行すると、選択したフォルダを個別のアーカイブに一括で圧縮する「バッチZip」のエントリがコンテキストメニューに表示されます。

ただし、これをコンテキストメニューから実行すると、残念ながらすべての操作が同時に実行されます。多くの圧縮と解凍を行った人なら誰でも知っているように、フォルダの圧縮は、一度に実行するよりも次から次へと非常に高速に機能します。

誰かがレジストリでこれを修正する方法を知っている場合は教えてください。

選択したフォルダをバッチにドラッグすると、順番に実行されます。

5
roryok

ヒント:画像がJPGの場合、画像はすでに圧縮されています。圧縮なしの「アーカイブ」モードで7-Zipを使用(圧縮レベル:ストア)これにより、プロセスが大幅にスピードアップします。

ウルトラ圧縮を使用しても、5%になることはほとんどありません。

私は実際に添付ファイルを追加することを考えていました。

メールの添付ファイルとして送信しません。むしろ、いわゆるワンクリックホスティングサーバーにアップロードし(例:drop.io、rs、mu、msなど、選択肢は豊富です)、ダウンロードリンクをメールで友達や家族に送信します。

3
Molly7244

私はroryokの回答が非常に役立つことがわかり、batch script for Windowsを使用すると、drag-&-dropファイルを使用すると、迅速な自動アーカイブが可能になります。


このスクリプトを使用するには、.bat拡張子。ファイルやフォルダをバッチファイルにドラッグアンドドロップできます(またはバッチファイルへのショートカット)。

.Zipファイルは、ソースファイルと同じディレクトリに作成されます。
ただし、宛先はスクリプト@ archivePathで変更できます)


カスタマイズの容易さと全体的な機能を改善するために行ったいくつかの更新:

  • 名前付き変数を追加
  • 与えられた引数を反復するforループを実装しました
    _delayedexpansionとともに実行時変数を許可する
  • iffiles を区別するためにfolders条件を追加
    • これにより、親フォルダーをアーカイブ内に含めるのではなく、フォルダーの内容をアーカイブに直接追加できます。
      EG:\archive.Zip\file.txt[〜#〜] vs [〜#〜]\archive.Zip\parent_folder\file.txt
  • エラーログを追加して、失敗したインスタンスを表示するか、エラーがない場合は成功メッセージを表示します

@Echo OFF
SetLocal EnableDelayedExpansion



Rem //  7-Zip Executable Path
Set sevenZip="C:\Program Files\7-Zip\7z.exe"



Rem // START: NewLine Variable Hack
Set newLine=^


Rem // END: NewLine Variable Hack !! DO NOT DELETE 2 EMPTY LINES ABOVE !!



Rem //  Set ErrorLog Variables
Set errorCount=0
Set separator=--------------------------------------------------------
Set errorLog=!newLine!!newLine!!separator!!newLine!!newLine!
Set errorPrefix=ERROR @:
Set successMessage=All Files Were Successfully Archived



Rem //  Loop Through Each Argument
SetLocal DisableDelayedExpansion
for %%x in (%*) do (

    Rem //  Use Current Argument To set File, Folder, & Archive Paths
    SetLocal DisableDelayedExpansion
    Set filePath="%%~x"
    Set directoryFiles="%%~x\*"
    Set archivePath="%%~x.Zip"
    SetLocal EnableDelayedExpansion

    Rem //  Source Is A Folder
    if exist !directoryFiles! (
            Set sourcePath=!directoryFiles!
    )

    Rem //  Source Is A File
    if not exist !directoryFiles! (
            Set sourcePath=!filePath!
    )

    Rem //  Print Separator To Divide 7-Zip Output
    echo !newLine!!newLine!!separator!!newLine!!newLine!

    Rem //  Add Files To Zip Archive
    !sevenZip! A -TZIP !archivePath! !sourcePath!

    Rem //  Log Errors
    if ErrorLevel 1 (
        Set /A errorCount=errorCount+1
        Set errorLog=!errorLog!!newLine!!errorPrefix!!sourcePath!
    )
)



Rem //  Print ErrorLog
if !errorCount!==0 (
    Set errorLog=!errorLog!!newLine!!successMessage!
)
Echo !errorLog!!newLine!!newLine!!newLine!



Rem //  Keep Window Open To View ErrorLog
pause
2
Enteleform

7-Zipには、すべてのファイルを独自のフォルダー(* /)に解凍するオプションがありますが、探している反対のアクションを実行するコンテキストコマンドがありません。

とは言っても、過去にwinrarを使用してこれとまったく同じことをしたことを覚えています。 「フォルダごとに一意のアーカイブ」オプションまたはその効果があるものがあります。

1
mtone

Picasaを入手して、picasaウェブアルバムにアップロードします。その後、誰でも簡単にオンラインで写真を取得して表示できます。オリジナルをアップロードすることもできます(家族が大きいバージョンを印刷できるようにするため)。

0
Kurru