What I need to do, at the command line, is:

  1. Extract the contents of a a ZIP archive.
  2. Change an arbitrary number of the extracted files.
  3. Repeat step 1, but because it is a huge archive, only extract the archived copies of the files changed in step 2 which is much faster.

Ideally the extraction in step 3 would do something like a checksum on the files on disk and only extract those where the file in the archive has a different checksum. Or maybe compare the date changed stamp on the disk file.

At the minute I use pkzipc.exe which is the command-line version of PkZip. I can't see a way to do it with this though. You can extract files from the archive that are newer than the disk files, but what I want is the opposite of that in a sense.


I've been looking for a program that would use the CRC32 in the zip file to know if a file had changed, but if all you care for is a date/time stamp and size, TreeComp could work for you.


Hmm, maybe I'm misunderstanding what you're trying to do, but why don't you just keep a second copy of the files that you're going to change (in step 2)?

Is there any particular reason you need to re-extract?

7-Zip has a command-line version that I'd suggest looking at regardless, I prefer it over all the other windows archiving tools I've used.


You can make a small Powershell function:

Function MyZip($Source,$Destination){
  "MD5 Hash: $((certutil -hashFile "$Source")[1])"
  Expand-Archive "$Path" "$Destination"

It will first show the MD5 hash of the zip file, then it will expand the archive into destination. To call:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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