7-zipでフォルダー全体を処理する方法


18

800x600ピクセルにトリミングする必要がある写真をたくさん手に入れました。それは簡単にできましたが、今では家族がすべて見ることができるようにアップロードしなければなりません。

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

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


1
いくつのフォルダについて話しているのですか?7?147?バッチファイルが苦手な場合でも、おそらくこれはその課題に取り組む良い機会です。:)
JMD

合計105フォルダー
-KdgDev

回答:


25

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

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

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

また、次のバージョンでは、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\*"

クラスパスに7-zipフォルダーを追加しようとしましたが、機能しません。7zだけでなく、文字列全体を使用して実行可能ファイルを見つけると、動作します。その文字列をクラスパスに追加しても同じ効果があるはずですか?
KdgDev

classpathJavaはクラスとライブラリを検索する場所です。 google.com/search?q=classpath これpathは、シェルが実行可能ファイルを探す場所と混同しているようです。
eleven81

質問:スクリプトは機能しますが、フォルダー名にスペースがある場合は機能しません
...-KdgDev

更新していただきありがとうございます。2番目のスクリプトでは、zipの内容が「フラット化」されるということですか?
KdgDev

6
これは私にとってはうまくいきましたが、Win 7のボックスでは、var nameが長すぎて「%% dは現時点では予期しない」エラーをスローしていると不平を言っていたので、変更する必要%%dがあり%dました。
ベンジャム

7

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

例えばC:\Files\Fables 01C:\Files\Fables 01.zip、とC:\Files\Fables 02C:\Files\Fables 02.zip

WinRARを使用して、zip圧縮するフォルダーを含むフォルダーを開き、次の手順を実行します。

  • zip / raredするすべてのフォルダーを選択します
  • [追加]または[ Alt+] Aまたは[コマンド]-> [アーカイブにファイルを追加]をクリックします
  • RARまたはZIPを選択します
  • 「ファイル」タブに移動します
  • [アーカイブ]ボックスの下の[各ファイルを個別のアーカイブに置く]をオンにします

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


「各ファイル」と表示されていても、このチェックボックスはフォルダーでも機能します。
ドーピン

1
ここで提案されているすべてのソリューションの中で、このソリューションは2018年に私にとって最適に機能しました。アーカイブを.zipにするかどうかを確認してください。
エリックヘッペルレ-CodeSlayer2010 18年

5

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. 文字列値を編集し、「バッチZip」と呼びます
  3. このキーの下に別の新しいキーを作成し、コマンドを呼び出し
  4. 二重エスケープスラッシュを使用して、この値をパスに変更します

たとえば、私のエントリは "C:\ Users \ Rory \ Dropbox \ _apps \ batch_zip.bat" "%1"です

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

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

レジストリでこれを修正する方法を知っている人がいれば教えてください。

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


1
7z exeは私のパス上になかったため、スクリプトを少し編集する必要がありました。"C:\ Program Files(x86)\ 7-Zip \ 7z.exe" a -tzip "%〜1.zip" "%〜1"
Ryan

1
ドラッグアンドドロップで怠zyを奨励するために+1。私はちょうど修正したバージョン@投稿http://superuser.com/a/1160047/678687
Enteleform

3

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

ウルトラ圧縮を使用しても、5%を獲得することはほとんどありません。確かに努力する価値はありません。

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

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


2
ただし、メールは簡単です。
ルーク

私はそれが「ウルトラ」で無数のJPGのみを圧縮するのにかかる時間を補うために、確かに十分ではない、アップロード475または500メガバイトであまり差がないと思う:)

私は実際に添付ファイルを追加するという点で考えていました。1つのファイルを10個ではなく添付ファイルとして追加する方が簡単です(ファイルの数が増えると、これは面倒になります)。
ルーク

これが、Mollyが「アーカイブ」モードを提案した理由です。既に圧縮されているものを圧縮しようとして時間を無駄にすることなく、すべてを1つのファイルに
エイドリアン

私が彼女の最後の文に言及していたのは事実ですが、それにもかかわらず、jpegファイルのサイズを少し縮小しても(実際にはそれほど小さくないこともあります)、それでも価値があります。圧縮に費やす時間は、Gmailや他のメール(Gmailの添付ファイルサイズが比較的大きい)をアップロードするのに費やす時間よりもはるかに短いです。
ルーク

2

roryokの回答は非常に役立つことがわかりました。彼は、迅速で自動化されたアーカイブのためにファイルを作成できるように提供batch scriptWindowsてくれましたdrag-&-drop


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

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


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

  • 名前付き変数を追加
  • 実施for指定された引数を反復処理することループ
    と一緒にdelayedexpansionランタイム変数を可能にします
  • 追加ifの分化条件filesfolders
    • これにより、アーカイブ内の親フォルダーを囲むのではなく、フォルダーの内容をアーカイブに直接追加できます
      (例   \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

1

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

とはいえ、過去にwinrarを使用してこの正確なことを行ったことを覚えています。「フォルダごとに固有のアーカイブ」オプションまたはその効果のあるオプションがあります。


-1

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


あなたは、人々がzipファイルをダウンロードし、解凍して幸せになると思うなら、私はあなたが悲しいことに失望すると思います... Webインターフェイスは、関係者全員のためにはるかに簡単です....
Kurru
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.