# Zip multiple folders indvidually, automatically

I have folders full of photos within category folders

eg

• holidays
• spain
• france
• italy
• family
• son
• daugher
• christmas
• 2010
• 2011

... except much longer ... there are about 100 folders.

I need to compress each sub folder ( ie spain, france italy, son, daughter etc) individually; so that, for the holidays category folder for example I would end up with:

• holidays
• spain
• spain.zip
• france
• france.zip
• italy
• italy.zip

... and so on. ( or using rar files )

I want to avoid doing this manually if possible, and I think it's possible from the command line using WinRar, (though I could use something else if that was better). Could someone give me (and briefly explain to me) the code I'd use, and how to use it. I know a little about the command line but I have fairly limited experience.

I am using Windows 7

-
If you don't even know how to begin to write a program like this then you don't have the skills to do it. A question like this isn't a good fit for Superuser. –  Ramhound May 21 '12 at 15:33
Since his request can be completed with one DOS command, it seems like an exact fit for Superuser. –  Tom May 21 '12 at 15:40

I don't think this will be easy using a batch file, but it should be possible.

Batch allows you to iterate through directories using a for loop like this:

for /d %%X in (directorySet) do ( command )


/d is required to specify that you will be looping through directories
%%X is a directory in the list
command is what to run like 'echo "hello"'

This is all I really know that might help you, what you use in place of command is very dependant on the program you are using.

It would be easier in Powershell as this has more bash-like notation, and is much more flexible, but using batch is completely fine.

Sorry that's all the help I could give, I have very minimal knowledge of batch...

-

I don't have a Windows system handy to cook up your command,
But, here is a rough list of things,

• you would use the dir command in a for loop (or, maybe you need a more recent manual page)
• limit your dir listing to depth=1 directories
• /A:D Folder switch (?)
• some way to not-recurse or use depth==1 (I've forgotten windows batch files now)
• Check 7z too
• If you are often into windows scripting check PowerShell
-
forfiles is another option –  Sathya May 21 '12 at 15:57

In DOS, change to the parent folder that has your 100+ folders, then run one "for" command, like this:

for %v in (*.*) do pkzip %v.zip %v


Replace pkzip with your command-line zip/archive tool. The 2nd and 3rd "%v" expand to the folder names.

-
Ah, yes -- DOS does not recurse into folders by default. Good. –  nik May 21 '12 at 15:52

Check out my answer to the similar SU question titled "How do I create seperate 7z files from each selected directory with 7zip command line?". It could easily be adapted to use a different command-line zip/archive tool, just change the part after the DO in the statement.

I personally prefer 7-Zip over WinRAR and the couple of other compression utilities I tried. It's powerful, quick, and free. Note that it's unlikely that your image files will be able to be compressed much since by the nature of their format they're usually already compressed with sophisticated image-oriented algorithms which a generally better than any generic one used in a compression utility -- although the non-free WinZip program claims can further reduce JPEG image files by 20-25%.

-
thanks, yes I know, I only want to zip them so that I can create a single file out of several. –  byronyasgur May 22 '12 at 0:02
@byronyasgur: In that case, most utilities have an option to not attempt to compress the files being added which would speed up the process. For 7-Zip see the -m switch in the help file (7-zip.chm in the command-line version download). BTW, 7-Zip can also create .zip files if you prefer them for some reason). –  martineau May 22 '12 at 16:50
good tip thanks –  byronyasgur May 22 '12 at 20:17

I thought it would be better to answer my own question and accept that, despite the helpful answers, (giving upvotes to everyone instead of picking an answer) ... so that future visitors would get a concise answer. This is because I ended up getting my result from a combination of the four answers so here was tested solution I ended up with.

I changed to 7zip ( downloading the command line version and placing it in my user folder) because it seems to have better documentation on command line operation than Winrar.

Then I created a batch file, which I ran from the folder whose subfolders I wished to zip; and put into it the following command which I derived from the other answers:

for /d %%i in (*.*) do "c:\users\user\7za" a -tzip "c:\path\to\output\folder\%%i.zip" "%%i"