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.