Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I got a bunch of pictures that I had to crop into 800x600 pixels. That was easily done, but now I have to upload them so the family can see them all.

Thing is, this is 500MB in pictures. I decided to simply zip the separate folders, which each contain an almost equal amount of pictures. This way I can upload a couple each day. Doing this manually is a very long and hard job. I wonder if there is a way to make 7-zip handle each folder individually?

I think I'll need a batch file to do it, but I'm not good with that. I've put everything under one folder. In the various subfolders is where the pictures are located. What I need is for the contents of that folder to be zipped. I'm not sure if I can just zip the folder along with it. I know PHP has a zip module, I've just never worked with it, so I'm not sure whether it can handle the fact that the content of the zip is a folder which contains the items, instead of just the items.

share|improve this question
    
How many folders are you talking about? 7? 147? If you're not good with batch files, but maybe this is a good opportunity to tackle that challenge. :) –  JMD Jan 11 '10 at 16:30
    
105 folder total –  KdgDev Jan 11 '10 at 20:06
add comment

8 Answers 8

up vote 10 down vote accepted

Run from a command prompt whose working directory is your My Pictures directory, this command will create a zip file of the contents of each subdirectory, leaving all of the zip files in your My Pictures directory.

Edit: I have added the quotation marks necessary to allow for directories with spaces in their names.

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

Also: The following version will not put files in a subdirectory inside of the zip file, but instead in its root:

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

In Windows 7 and above

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

or

for /D %d in (*.*) do 7z a -tzip "%d.zip" ".\%d\*"
share|improve this answer
    
I've tried adding the 7-zip folder to my classpath, but it won't work. If I use the entire string to locate the executable instead of just 7z, it does work. I though that adding that string to the class path should have the same effect? –  KdgDev Jan 11 '10 at 20:40
    
The classpath is where Java looks for classes and libraries. google.com/search?q=classpath You've apparently confused that with the path where the shell looks for executables. –  eleven81 Jan 12 '10 at 13:13
    
Question: the script works, but not when there are spaces in the folder-name... –  KdgDev Jan 29 '10 at 17:06
    
Thanks for the update. With the second script, do you mean that the contents of the zip will be "flattened"? –  KdgDev Jan 29 '10 at 22:10
3  
This worked great for me, although I had to change %%d to %d as my Win 7 box complained about the var name being too long throwing a "%%d was unexpected at this time" error. –  Benjam Sep 8 '11 at 21:38
show 1 more comment

Tip: if you're images are JPGs, they are already compressed. use 7-Zip in 'archive' mode without compression (compression level: store) this will speed up the process tremendously.

even if you use Ultra compression you will hardly gain 5%, certainly not worth the effort.

I was thinking in terms of practically adding attachments.

i wouldn't send them as email attachment. rather upload the to a so called one-click-hosting server (e.g. drop.io, rs, mu, ms, etc., choices are plenty) and then send the download link via email to your friends and family.

share|improve this answer
2  
They will be easier to mail, though. –  ldigas Jan 11 '10 at 16:48
    
i don't think there's much difference in uploading 475 or 500 MB, certainly not enough to make up for the time it takes to compress a gazillion JPGs with 'Ultra' :) –  Molly7244 Jan 11 '10 at 17:10
    
I was thinking in terms of practically adding attachments. It's easier to add one file as attachment instead of 10. (when number of files grow, this becomes annoying). –  ldigas Jan 11 '10 at 17:50
    
Which is why Molly suggested "archive" mode; it stuffs 'em all into one file, without wasting time trying to compress something that's already compressed ... –  Adrien Jan 11 '10 at 18:18
    
It's true I was reffering to her last sentence, but nevertheless, even with small reduction in size of jpeg files (and sometimes it's not so small, actually), it is still worth it. Time spend on compression is far less than time spend uploading it to let's say, gmail or some other mail (gmail having a relatively large attachment size allowance). –  ldigas Jan 11 '10 at 18:25
show 4 more comments

I couldn't get the command line to work, instead I downloaded WinRAR and mtone was right - WinRAR does have an option to zip multiple folders into their own separate ZIP files.

E.g. C:\Files\Fables 01 into C:\Files\Fables 01.zip, and C:\Files\Fables 02 into C:\Files\Fables 02.zip.

With WinRAR, open the Folder that contains the folders you want to zip, then follow these steps:

  • Select all folders you want zipped/rared
  • Click "ADD" or Alt+A or Commands -> "Add files to Archive"
  • Select RAR or ZIP
  • go to "Files" tab
  • Check "Put each file to separate archive" under the Archives box

When you've got any other settings you like fixed, hit OK and boom: multiple ZIP files of multiple folders. This worked so much easier than command line 7zip.

share|improve this answer
add comment

Just a slight update of eleven81's answer: The code below creates a batch file which multiple items can be dropped onto.

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

This batch file can then be added to the context menu via the registry:

  1. create a new key under [HKEY_CLASSES_ROOT\Folder\shell], call it cmd1
  2. Edit the string value and call it 'Batch Zip'
  3. create another new key under this one and call it command
  4. Change the value of this to your path, with double escaped slashes

So for example, my entry is "C:\Users\Rory\Dropbox\_apps\batch_zip.bat" "%1"

Once you do this you'll have an entry in your context menu for 'Batch Zip' which will batch zip any selected folders into separate archives

However, if you do this via the context menu, it will unfortunately run all operations simultaneously, and as anyone who's done a lot of zipping and unzipping will know, zipping folders works a lot faster one after the other than all at once.

If anyone knows a way to fix this in the registry please do tell.

Dragging the selected folders onto the batch will do them one after the other.

share|improve this answer
add comment

This answer is community wiki because I just want to clarify what you are trying to accomplish. If I understand correctly, you want to be able to create .zip files for the contents of each of the Pics* folders, not the whole structure, and not .zips that contain the Pics* folder itself, but rather the contents of the folder.

  • My Pictures
    • Pics1 (... Pics1.zip)
      • File1.jpg
      • File2.jpg
      • File3.jpg
    • Pics2 (... Pics2.zip)
      • File4.jpg
      • File5.jpg
    • Pics3 (... Pics3.zip)
      • File6.jpg
      • File7.jpg
    • ...
share|improve this answer
    
Yup, you got it. –  KdgDev Jan 12 '10 at 8:27
add comment

7-zip has an option to UNZIP every file into its own folder (*/), but lacks the context commands to do the opposite action you are looking for.

That said, I remember doing this exact thing using winrar in the past. There's an option "unique archive per folder" or something to that effect.

share|improve this answer
add comment

Try looking at this article (also, read comments below) : Zip a Folder Using Command Line

share|improve this answer
    
I do mind the downvote, expecially since it does answer his question (wrongly worded, but nevertheless so). –  ldigas Jan 11 '10 at 17:10
add comment

Get picasa and upload to picasa's web album. Then everyone can easily get the photos online and view them.Might be even able to upload the originals (so your family can print the larger versions)

share|improve this answer
    
If you think people will be happy with downloading and extracting zip files I think you'll be sadly disappointed... Web interface is much easier for everyone involved.... –  Kurru Jun 22 '11 at 10:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.