DotNetZip includes command-line tools that you can include in a script.
it works with NTFS ;) It's free, open source.
DotNetZip on CodePlex
c:\temp> zipit -?
Zipit.exe: zip up a directory, file, or a set of them, into a zipfile.
Depends on Ionic's DotNetZip library. This is version 1.8.2.13 of the utility.
usage:
ZipIt.exe <ZipFileToCreate> [arguments]
arguments:
-utf8 - use UTF-8 encoding for entries with comments or
filenames that cannot be encoded with the default IBM437
code page.
-aes - use WinZip-compatible AES 256-bit encryption for entries
subsequently added to the archive. Requires a password.
-sfx [w|c] - create a self-extracting archive, either a Windows or console app.
-64 - use ZIP64 extensions, for large files or large numbers of files.
-cp <codepage> - use the specified numeric codepage for entries with comments
or filenames that cannot be encoded with the default IBM437
code page.
-p <password> - apply the specified password for all succeeding files added.
use "" to reset the password to nil.
-c <comment> - use the given comment for the next file added to the archive.
-zc <comment> - use the given comment for the archive.
-d <path> - use the given directory path in the archive for
succeeding items added to the archive.
-s <entry> 'string' - insert an entry of the given name into the
archive, with the given string as its content.
-flat - store the files in a flat dir structure; do not use the
directory paths from the source files.
<directory> | <file> - add the directory or file to the archive.